sqoop从hdfs导出到mysql

kqhtkvqz  于 2021-06-03  发布在  Sqoop
关注(0)|答案(2)|浏览(398)

我在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 ERROR [main] org.apache.sqoop.mapreduce.TextExportMapper: 2017-03-20 15:32:37,388 ERROR [main] org.apache.sqoop.mapreduce.TextExportMapper: Exception raised during data export 2017-03-20 15:32:37,388 ERROR [main] org.apache.sqoop.mapreduce.TextExportMapper: 2017-03-20 15:32:37,388 ERROR [main] org.apache.sqoop.mapreduce.TextExportMapper: Exception: java.lang.RuntimeException: Can't parse input data: 'sam' at test1.__loadFromFields(test1.java:335) at test1.parse(test1.java:268) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) Caused by: java.util.NoSuchElementException at java.util.ArrayList$Itr.next(ArrayList.java:834) at test1.__loadFromFields(test1.java:330)

htrmnn0y

htrmnn0y1#

这是csv数据中的最后一列,因此它无法识别最后一列,并以mysql的默认属性结束该行,以error结束
所以创建csv就像
1,山姆,
2,ram,
3,蒂姆,纽约
4,吉姆,加利福尼亚州
运行以下sqoop导出命令
sqoop导出--连接jdbc:mysql://localhost:3306/test --用户名x--密码x--表测试--导出目录stack/stack.csv-m 1
谢谢

fzsnzjdm

fzsnzjdm2#

该错误是由于前两行和后两行的架构不同而导致的。

1,sam
2,ram
3,Tim,Ny
4,Jim,CA

sqoop期望 , 之后 sam 以及 ram . 最后一列可以为空,但 , 应该在那里。

相关问题