在使用sqoop抽取mysql中到hive时,其中两个字段数据发生了如下变化:
明显该字段被转成了ascii类型,查看Mysql中数据库表字段是mediumtext类型。
估计是不识别这种类型,找了一下资料,发现可以对字段进行转义:
--map-column-java xxx=String
如果是有多个字段需要转义的话,如下所示:
--map-column-java 字段1=String,字段2=String,字段3=String,字段4=String
其中有两个小细节,字段名必须小写,字段类型转换应该用String(首字母大写)
附源码如下:
sqoop import --connect jdbc:mysql://127.0.0.1:3306/dayu_call_center --username user --password password --query "SELECt * FROM dayu_call_center.CALL_ORDER_PROPERTY_SPLIT WHERe $ConDITIONS " --map-column-java parameter_value_replace=String,parameter_value=String --hive-database ods --split-by ID --hive-table dycc_call_order_property_split_int --target-dir /inceptor1/user/hive/warehouse/ods.db/hbxyoper/dycc_call_order_property_split_int --delete-target-dir --fields-terminated-by ' 01' --hive-drop-import-delims -m 1 --null-string '\N' --null-non-string '\N' --compression-codec org.apache.hadoop.io.compress.BZip2Codec
参考文档:Sqoop import with multiple columns for --map-column-hive - Apache Sqoop - itversity



