我不知道哪里出错了,但是我的sqoop export命令从hdfs到mysql每次都失败。
sqoop export --connect "jdbc:mysql://quickstart.cloudera:3306/streaming"
--username root --password cloudera --table pd_count --update-key id
--update-mode allowinsert --export-dir /user/cloudera/input/* -m 1 --batch
导出目录中只有1个文件夹,包含3个文件,即,
第m-00000部分
第m-00001部分
第m-00002部分
我已经更新了最后一个文件,以便了解--update参数。但是,不管我尝试了多少次排列,工作都失败了。
我将数据导出到mysql中,没有增量更新,数据导出成功。
我用“增量追加”将数据导入到hdfs中,很成功。
但是当我尝试用“update key”和“update mode”将数据导出到mysql时,它没有传输,并且失败了。
上述命令是最后使用的命令。
下面是这个链接最近的错误日志,请帮助我。
提前谢谢。
1条答案
按热度按时间zujrkrfu1#
好的..我假设了一些不同的东西。你能试着用下面的选项吗
使用
--verbose
再次导出扩展日志。您可以查看失败应用程序的应用程序日志。要获取它们,请以运行sqoop命令的用户身份运行以下命令-
yarn logs -applicationId application_1513399439223_0001 > app_logs.txt.
好像你没有加上--input-fields-terminated-by
.根据您的最新评论更新答案
我看到您已终止作业。这可能与性能有关。请尝试调整以下内容,然后再次运行sqoop:
将Map器的数目设置为4
-m 4
批量插入数据--batch
使用属性sqoop.export.records.per.statement
指定将在每个insert语句中使用的记录数sqoop export -Dsqoop.export.records.per.statement=100 --connect
最后,使用sqoop.export.statements.per.transaction属性指定每个事务将插入多少行。sqoop export -Dsqoop.export.statements.per.transaction=100 --connect
请提供Yarn日志,数据量是多少?