当我运行sqoop export命令时,我得到以下错误。
这是我要通过sqoop命令导出的内容
00001|Content|1|Content-article|\N|2015-02-1815:16:04|2015-02-1815:16:04|1 |\N|\N|\N|\N|\N|\N|\N|\N|\N 00002|Content|1|Content-article|\N|2015-02-1815:16:04|2015-02-1815:16:04|1 |\N|\N|\N|\N|\N|\N|\N|\N|\N
sqoop命令
sqoop export --connect jdbc:postgresql://10.11.12.13:1234/db --table table1 --username user1 --password pass1--export-dir /hivetables/table/ --fields-terminated-by '|' --lines-terminated-by '\n' -- --schema schema
15/06/09 08:05:16 INFO mapreduce.Job:任务ID: attempt_1431442954745_1210_m_000001_0,状态:FAILED错误: java.io.IOException:无法导出数据,请检查失败的map任务 日志 at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:112) at 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:764) 在org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:168) at java.security.AccessController.doPrivileged(Native Method) 在javax.security.auth.Subject.doAs(Subject.java:415) 在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594) 在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)引起:java.lang.RuntimeException:无法解析输入数据:'\ N' at duser .__ loadFromFields(duser.java:690) 在duser.parse(duser.java:558) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:83) ... 10更多引起:java.lang.IllegalArgumentException:时间戳格式必须为yyyy-mm-dd hh:mm:ss [.fffffffff] at java.sql.Timestamp.valueOf(Timestamp.java:202) at duser .__ loadFromFields(duser.java:627)
你能帮我解决一下吗?
答案 0 :(得分:5)
尝试将这些参数添加到导出语句
--input-null-string "\\\\N" --input-null-non-string "\\\\N"
来自文档:
如果未指定--input-null-string,则字符串“null”将为 对于字符串类型的列,将被解释为null。如果 --input-null-non-string未指定,则字符串“null”和空字符串将被解释为null为非字符串 列。
如果您不添加这些参数,则无法理解数据中的\N
实际上是null
。
答案 1 :(得分:0)
问题似乎是导入列的顺序。 Sqoop不会自动理解列映射。尝试使用--columns
参数指定列的显示顺序。以下是如何使用它:
sqoop export --connect jdbc:postgresql://10.11.12.13:5432/reports ... --columns col1,col2,col3,...
有关如何使用--columns
的文档,请参阅http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_purpose_4。