我用sqoop1.99-100哪个版本想把mysql的一个table导入到hdfs里,master机器是namenode,slave1和slave2是datanode,我只在master上安装了sqoop,并启动了./sqoop.sh server start,然后再master上set了server,开始导也跟大家都差不多,但是结果蛋疼啊,我table中有10行数据,结果导完后在http://master:50070/上看dfs文件,发现只有四行数据被导出来了,不明白为什么 在datanode1和2里看到的内容就是应该是一样的,不可能说数据拆开放一个地方,你这就几行数据怎么可能拆开放俩地方啊?应该还是导入的时候出的问题
是那个localhost的问题,因为每个机器上的mysql都有localhost对应的用户,所以执行命令后sqoop会在三台机器上寻找table里的记录,当发现三台机器里的table记录不同时sqoop只会选择重复的少量数据导出,不重复的数据它就自动忽略掉了,如果没有重复的数据那就一条记录也没有,所以解决方案很简单了,首先在sudo vi /etc/mysql/my.cnf,注释掉其中的 #bind-address= 127.0.0.1,然后把sqoop命令里的localhost改成ip就行了
|