sqoop导入没有移动hdfs中的整个表

2jcobegt  于 2021-06-03  发布在  Sqoop
关注(0)|答案(7)|浏览(296)

我在mysql中创建了一个小数据库,其中只有很少的表。现在我使用sqoop将表传输到hdfs。
下面是sqoop命令:
sqoop导入--连接jdbc:mysql用法://localhost/sqooptest--用户名root-p--表emp--m1--驱动程序com.mysql.jdbc.driver
我没有得到最后两栏,工资和部门
上述命令的输出
1201光电管理器
1202异形阅读器
1203khalilphp开发
1204水泵设备
1205兰提亚明
mysql表是:
+------+

tktrz96b

tktrz96b1#

----+--------+------+
|id |姓名|学位|薪资|部门|
+------+

liwlm1x9

liwlm1x92#

----+--------+------+
我尝试使用“--fields terminated by,”或“--input fields terminated by,”,但失败了
另外,当我使用Map器计数时,比如(-m 3),在hdfs中只得到一个文件。
我在ubuntu机器上使用apachesqoop。
提前感谢您找到解决方案。:)

vddsk6oq

vddsk6oq5#

你的命令似乎是对的。下面提供了一些步骤,您可以再次尝试执行这些步骤,看看是否有效:
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

这是因为数据量很小,一个Map器就足以处理它。您可以通过查看sqoop日志来验证这一点,该日志输出:

Job Counters
Launched map tasks=1

mf98qq94

mf98qq947#

----+--------+------+
|1201 | gopal |经理| 50000 | tp|
|1202 | manisha |校对器| 50000 | tp|
|1203 |哈利勒| php开发| 30000 | ac|
|1204 | prasanth | php开发| 30000 | ac|
|1205 | kranthi |管理| 20000 | tp|
+------+

相关问题