問題描述
使用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}