我在 HDFS 中有 CSV 文件。内容如下。
1,sam
2,ram
3,Tim,Ny
4,Jim,CA
现在我想将此文件导出到 MySQL 表中。
MySQL 表具有以下列 id
name
city
我收到 sqoop 导出失败错误。
这是我正在使用的 sqoop 导出语句。
sqoop export --connect jdbc:mysql://xxxx/test --username xxxxx --password xxxxx --table test --export-dir /user/xxxxx/testing -m 1 --input-fields-terminated-by ',' --input-null-string '\n' --input-null-non-string '\n'
为什么我会收到此错误以及正确完成导出的正确方法是什么。如果文件是 parquet 格式怎么办?
错误代码:
2017-03-20 15:32:37,388 错误 [主要] org.apache.sqoop.mapreduce.TextExportMapper:
2017-03-20 15:32:37,388 错误 [main] org.apache.sqoop.mapreduce.TextExportMapper:数据导出期间引发异常
2017-03-20 15:32:37,388 错误 [主要] org.apache.sqoop.mapreduce.TextExportMapper:
2017-03-20 15:32:37,388 错误 [主要] org.apache.sqoop.mapreduce.TextExportMapper:异常:
java.lang.RuntimeException:无法解析输入数据:'sam'
在 test1.__loadFromFields(test1.java:335)
在 test1.parse(test1.java:268)
在 org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)
在 org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39)
在 org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
在 org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
在 java.security.AccessController.doPrivileged( native 方法)
在 javax.security.auth.Subject.doAs(Subject.java:415)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)
在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
引起原因:java.util.NoSuchElementException
在 java.util.ArrayList$Itr.next(ArrayList.java:834)
在 test1.__loadFromFields(test1.java:330)
最佳答案
该错误是由于前两行和最后两行的架构不同而引起的。
1,sam
2,ram
3,Tim,Ny
4,Jim,CA
Sqoop 正在等待 ,
在 sam
和 ram
之后。最后一列可以为空,但 ,
应该在那里。
关于mysql - Sqoop 从 HDFS 导出到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910784/