赞
踩
在使用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 '\001' \
- --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
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。