我在mysql中创建了一个包含少量表的小型数据库。现在我使用 sqoop 将表传输到 HDFS。
下面是sqoop命令:sqoop import --connect jdbc:mysql://
localhost/sqooptest --username root -P --table emp --m 1 --driver com.mysql.jdbc.Driver
我没有得到最后 2 列,薪水和部门
上述命令的输出 1201gopalmanager 1202manisha
Proof reader 1203khalilphp dev
1204prasanthphp
dev
1205kranthiadmin
MySql table is :+------+
----------+--------------+--------+------+|
ID | 姓名 | DEG | 薪资 | 部门 |
+------+----------+--------------+--------+------+
| 1201 | 戈帕尔 | 经理 | 50000 |目标价 ||
1202 | 马尼沙 |校样阅读器 | 50000 |目标价 ||
1203 | 哈利勒 | PHP 开发 | 30000 |空调 ||
1204 | 普拉桑 | PHP 开发 | 30000 |空调 ||
1205 | 克兰西 | 管理员 | 20000 |目标价 |
+------+----------+--------------+--------+------+
我尝试使用">--fields-terminated-by, **"或"--input-fields-endinated-by ,**"但失败了 同样
当我使用映射器计数(--m 3(时,在HDFS中只获取单个文件。
我在ubuntu机器上使用apache Sqoop。
提前感谢您找到解决方案。 :)
您的命令似乎是正确的。在下面提供一些步骤,您可以尝试再次执行,看看它是否有效:
1( 创建表并填充它 (MySQL(
mysql> create database sqooptest;
mysql> use sqooptest;
mysql> create table emp (id int, name varchar(100), deg varchar(50), salary int, dept varchar(10));
mysql> insert into emp values(1201, 'gopal','manager',50000,'TP');
mysql> insert into emp values(1202, 'manisha','Proof reader',50000,'TP');
mysql> insert into emp values(1203, 'khalil','php dev',30000,'AC');
mysql> insert into emp values(1204, 'prasanth','php dev',30000,'AC');
mysql> insert into emp values(1205, 'kranthi','admin',20000,'TP');
mysql> select * from emp;
+------+----------+--------------+--------+------+
| id | name | deg | salary | dept |
+------+----------+--------------+--------+------+
| 1201 | gopal | manager | 50000 | TP |
| 1202 | manisha | Proof reader | 50000 | TP |
| 1203 | khalil | php dev | 30000 | AC |
| 1204 | prasanth | php dev | 30000 | AC |
| 1205 | kranthi | admin | 20000 | TP |
+------+----------+--------------+--------+------+
2( 运行导入
$ sqoop import --connect jdbc:mysql://localhost/sqooptest --username root -P --table emp --m 1 --driver com.mysql.jdbc.Driver --target-dir /tmp/sqoopout
3( 检查结果
$ hadoop fs -cat /tmp/sqoopout/*
1201,gopal,manager,50000,TP
1202,manisha,Proof reader,50000,TP
1203,khalil,php dev,30000,AC
1204,prasanth,php dev,30000,AC
1205,kranthi,admin,20000,TP
HDFS
只有一个文件(part-m-00000
(:
$ hadoop fs -ls /tmp/sqoopout
Found 2 items
/tmp/sqoopout/_SUCCESS
/tmp/sqoopout/part-m-00000
这是因为数据量很小,一个映射器足以处理它。您可以通过查看 sqoop 日志来验证这一点,该日志输出:
Job Counters
Launched map tasks=1