来自MySQL的sqoop,其中数据包含回车符

时间:2014-11-10 21:19:34

标签: mysql hive sqoop

我有一个MySQL表,其中varchar列中的某些值以'^ M'结尾(即回车或'\ r'),而其他值则没有。 MySQL数据库是我无法控制的生产环境的一部分,因此我无法使用简单的update mytable set mycol = trim(mycol);删除尾随回车。

当我sqoop MySQL表到我的集群时,我注意到带有回车符的记录最终未对齐,导致一些奇怪的查询结果。 sqoop(v 1.4.4)命令如下所示:

sqoop import \
    --connect jdbc:mysql://myhost:3306/mydb
    --username myuser
    --password mypass
    --table mytable
    --target-dir user/hive/warehouse/mydb.db/mytable
    --hive-import
    --hive-table mydb.mytable
    --hive-overwrite -m 1

问)是否有可能直接从MySQL返回包含某些回车的sqoop数据而没有某种中间步骤来删除回车?

理想的工作流程是由sqoop安排的简单oozie命令。暂存数据并使用sed(或其他)剥离\r看起来像是一块垃圾。

1 个答案:

答案 0 :(得分:1)

答案在手册中(http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html)。我需要在sqoop语句中添加以下参数:

--hive-drop-import-delims