Jul*_*ias 10 hadoop hive sqoop
我有一个配置单元查询:
insert override directory /x
select ...
Run Code Online (Sandbox Code Playgroud)
然后我尝试用sqoop导出数据
sqoop export --connect jdbc:mysql://mysqlm/site --username site --password site --table x_data --export-dir /x --input-fields-terminated-by 0x01 --lines-terminated-by '\n'
Run Code Online (Sandbox Code Playgroud)
但这似乎无法根据分隔符解析字段我错过了什么?我认为--input-fields-terminated-by 0x01部分不能按预期工作?
我不想在包含查询结果的配置单元中创建其他表.
堆栈跟踪:
2013-09-24 05:39:21,705 ERROR org.apache.sqoop.mapreduce.TextExportMapper: Exception:
java.lang.NumberFormatException: For input string: "9-2"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
...
Run Code Online (Sandbox Code Playgroud)
输出的vi视图
16-09-2013 23^A1182^A-1^APub_X^A21782^AIT^A1^A0^A0^A0^A0^A0.0^A0.0^A0.0
16-09-2013 23^A1182^A6975^ASoMo Audience Corp^A2336143^AUS^A1^A1^A0^A0^A0^A0.2^A0.0^A0.0
16-09-2013 23^A1183^A-1^APub_UK, Inc.^A1564001^AGB^A1^A0^A0^A0^A0^A0.0^A0.0^A0.0
17-09-2013 00^A1120^A-1^APub_US^A911^A--^A181^A0^A0^A0^A0^A0.0^A0.0^A0.0
Run Code Online (Sandbox Code Playgroud)
Jul*_*ias 11
我在bash中找到了这个特殊字符的正确解决方案
#!/bin/bash
# ... your script
hive_char=$( printf "\x01" )
sqoop export --connect jdbc:mysql://mysqlm/site --username site --password site --table x_data --export-dir /x --input-fields-terminated-by ${hive_char} --lines-terminated-by '\n'
Run Code Online (Sandbox Code Playgroud)
问题在于正确的分隔符识别(与类型和模式无关),这是由hive_char实现的.
将这个特殊字符在linux中编码为命令行的另一种可能性是键入Cntr + V + A.
| 归档时间: |
|
| 查看次数: |
21835 次 |
| 最近记录: |