我在mysql中创建了一个小数据库,其中只有很少的表。现在我使用sqoop将表传输到hdfs。下面是sqoop命令:sqoop导入--连接jdbc:mysql用法://localhost/sqooptest--用户名root-p--表emp--m1--驱动程序com.mysql.jdbc.driver我没有得到最后两栏,工资和部门上述命令的输出1201光电管理器1202异形阅读器1203khalilphp开发1204水泵设备1205兰提亚明mysql表是:+------+
tktrz96b1#
----+--------+------+|id |姓名|学位|薪资|部门|+------+
liwlm1x92#
----+--------+------+我尝试使用“--fields terminated by,”或“--input fields terminated by,”,但失败了另外,当我使用Map器计数时,比如(-m 3),在hdfs中只得到一个文件。我在ubuntu机器上使用apachesqoop。提前感谢您找到解决方案。:)
t98cgbkg3#
hivapdat4#
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/sqoopoutFound 2 items/tmp/sqoopout/_SUCCESS/tmp/sqoopout/part-m-00000
这是因为数据量很小,一个Map器就足以处理它。您可以通过查看sqoop日志来验证这一点,该日志输出:
Job CountersLaunched map tasks=1
wkyowqbh6#
mf98qq947#
----+--------+------+|1201 | gopal |经理| 50000 | tp||1202 | manisha |校对器| 50000 | tp||1203 |哈利勒| php开发| 30000 | ac||1204 | prasanth | php开发| 30000 | ac||1205 | kranthi |管理| 20000 | tp|+------+
7条答案
按热度按时间tktrz96b1#
----+--------+------+
|id |姓名|学位|薪资|部门|
+------+
liwlm1x92#
----+--------+------+
我尝试使用“--fields terminated by,”或“--input fields terminated by,”,但失败了
另外,当我使用Map器计数时,比如(-m 3),在hdfs中只得到一个文件。
我在ubuntu机器上使用apachesqoop。
提前感谢您找到解决方案。:)
t98cgbkg3#
hivapdat4#
vddsk6oq5#
你的命令似乎是对的。下面提供了一些步骤,您可以再次尝试执行这些步骤,看看是否有效:
1) 创建表并填充它(mysql)
2) 运行导入
3) 检查结果
$ hadoop fs -ls /tmp/sqoopout
Found 2 items
/tmp/sqoopout/_SUCCESS
/tmp/sqoopout/part-m-00000
Job Counters
Launched map tasks=1
wkyowqbh6#
mf98qq947#
----+--------+------+
|1201 | gopal |经理| 50000 | tp|
|1202 | manisha |校对器| 50000 | tp|
|1203 |哈利勒| php开发| 30000 | ac|
|1204 | prasanth | php开发| 30000 | ac|
|1205 | kranthi |管理| 20000 | tp|
+------+