Hive 当我有数据时,sqoop导出失败\N

Hive 当我有数据时,sqoop导出失败\N,hive,sqoop,Hive,Sqoop,当我运行sqoop导出命令时,我遇到以下错误 这是我要通过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|\

当我运行sqoop导出命令时,我遇到以下错误

这是我要通过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 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信息mapreduce.作业:任务Id: 尝试_1431442954745_1210_m_000001_0,状态:失败错误: java.io.IOException:无法导出数据,请检查失败的映射任务 日志 在org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:112)上 位于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) 位于java.security.AccessController.doPrivileged(本机方法) 位于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' 在duser.\uu loadFromFields(duser.java:690) 在duser.parse(duser.java:558) 位于org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:83) ... 10更多原因:java.lang.IllegalArgumentException:时间戳格式必须为yyyy-mm-dd hh:mm:ss[.fffffffff] 位于java.sql.Timestamp.valueOf(Timestamp.java:202) 在duser.\uu loadFromFields(duser.java:627)


您能帮我解决这个问题吗?

问题似乎是导入列的顺序。Sqoop不会自动理解列映射。尝试使用
--columns
参数指定列的显示顺序。以下是如何使用它:

sqoop导出——连接jdbc:postgresql://10.11.12.13:5432/reports ... --列col1、col2、col3、…


有关如何使用
--columns

的文档,请参阅,尝试将这些参数添加到export语句中

--input-null-string "\\\\N" --input-null-non-string "\\\\N"
从文件中:

如果未指定--input null字符串,则将显示字符串“null” 对于字符串类型的列,不能解释为null。如果 --如果未指定输入null non string,则字符串“null”和空字符串对于non string都将被解释为null 列


如果不添加这些参数,它将无法理解数据中的
\N
实际上是
null

谢谢,我用--column修改了脚本,但仍然得到相同的错误。
原因:java.lang.IllegalArgumentException:时间戳格式必须是yyyy mm dd
是要查看的错误。我会在sqoop邮件列表中询问您的问题,他们可以指导您解决这个问题。您可以共享postgres表的架构吗?尝试将这些参数添加到导出语句中--输入空字符串“\\\\N”--输入空非字符串“\\\\\N”有效-@highonprogramming,在回答部分添加此参数。很高兴它有效。我添加了它作为答案。从一个sqoop文档网站上,我发现:--null string'\\N'--null non string'\\N',但它不起作用。我切换到highonprogramming的代码,现在它可以工作了。谢谢