问题描述
使用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}
本文描述了使用SQOOP将数据导入HDFS并使用Hive查询时出现的数据错位问题,深入分析了问题原因在于源数据中的换行符导致记录错误解析。文章提供了详细的解决方法,包括在SQOOP命令中添加特定参数来避免换行符的影响。

1789

被折叠的 条评论
为什么被折叠?



