Sqoop--源数据含有默认换行符导致的数据不正确
2018-11-29 本文已影响92人
撸码小丑
问题描述
使用sqoop导数导到hdfs中,使用Hive查询发现数据多了,并且有数据错位的现象。
原因
源数据中有'\n'换行符,导致被hive识别为换行符。所以出现了记录多并且数据错位的现象。
解决方法
使用sqoop命令时加入:
--hive-drop-import-delims
例如:
sqoop import \
--connect ${CONNECT} \
--username ${USER} \
--password "${PASSWD}" \
--query " select ${impala_fields} from ${MYSQL_TABLE} where \$CONDITIONS " \
--where '1=1' \
--fields-terminated-by '\001' \
--hive-drop-import-delims \
--target-dir ${HDFS_DIR}/${HIVE_DB}.db/${HIVE_TABLE}/part_key=${HOST} \
--delete-target-dir \
--outdir ${PROGRAM_HOME}/java \
--null-string '\\N' \
--null-non-string "\0" \
-m ${NUMMAPPERS}