sqoop import不会移动HDFS中的整个表

  • 本文关键字:HDFS import 移动 sqoop sqoop
  • 更新时间 :
  • 英文 :


我在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

相关内容

  • 没有找到相关文章

最新更新