Hive 当我有数据时,sqoop导出失败\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|\NHive 当我有数据时,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 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的代码,现在它可以工作了。谢谢