sqoop clob从Oracle导入到hive   回车换行导致记录增多

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqoop clob从Oracle导入到hive   回车换行导致记录增多相关的知识,希望对你有一定的参考价值。

sqoop import --hive-import --hive-overwrite  --connect jdbc:oracle:thin:@192.168.92.136:1521:cyporcl --username ODS --password ‘od154DS$!(‘  -m 1  --hive-database ODS --table Q_TRA_DISPUTESTATUS --fields-terminated-by ‘\001‘ --hive-drop-import-delims  --null-string ‘\\N‘ --null-non-string ‘\\N‘  --map-column-java DISPUTERESULT=String

DISPUTERESULT 这个字段是Oracleclob 类型的,里面有回车, 加载到hive 里面导致 记录增多。


--map-column-java和--map-column-hive两个参数都要显示给出;还需要设置--hive-drop-import-delims这样才能顺利导出数据。

.导入的列有换行符如何解决
本以为万事大吉,万万没想到导入的列有nclob类型,里面存储了一篇篇文章,势必有着换行符。果不其然,hive查询数据全部错乱, 查询资料发现--hive-delims-replacement(替换/n,/r等符号用你指定的字符)和--hive-drop-import-delims参数。可添加上去发现并没有什么卵用,没有起作用。百度goole很久,终于发现一篇帖子,http://stackoverflow.com/questions/28076200/hive-drop-import-delims-not-removing-newline-while-using-hcatalog-in-sqoop
意思是要用--map-column-java参数来显示指定列为String类型。我的解决方案为 --map-column-java 我的CLOB列=String 果然,问题解决,换行符全部被去掉。不过听说改变存储格式 或许也可以避免这个问题,希望有着经验的大神来回答一下。总结下来就这么多,希望能帮助大家




以上是关于sqoop clob从Oracle导入到hive   回车换行导致记录增多的主要内容,如果未能解决你的问题,请参考以下文章

怎么用sqoop增量从hive往oracle数据库导数据

使用 sqoop 从 Oracle 到 hive 的日期导入问题

sqoop从oracle数据库抽取数据,导入到hive

hive-drop-import-delims选项对oracle的clob无效

Sqoop处理Clob与Blob字段

sqoop从oracle导数据后是空表