sqoop将oracle一张表全量数据导入hvie。
可以看到oracle中数据量1655条:
使用sqoop导入hvie:
sqoop import \
--table YW_YWDJ \
--connect jdbc:oracle:thin:@xxxx \
--username xxx --password xxx \
--hive-import \
--create-hive-table \
--hive-table xxx.ods_yw_ywdj \
--hive-drop-import-delims \
--lines-terminated-by "\n" \
-m 1
MR日志显示也是导出了1655条,但在hive中查看数据条数1707条(多了52条):
原因:
oracle表中存在CLOB字段:
而CLOB字段部分中存在换行符,导致一条数据被hive识别为两行,进而总数据条数增多。
解决方法:对应CLOB字段显式声明为string类型,即添加sqoop参数--map-column-java CLOB列名=String
sqoop import \
--table YW_YWDJ \
--connect jdbc:oracle:thin:@xxxx \
--username xxx --password xxx \
--hive-import \
--create-hive-table \
--hive-table xxx.ods_yw_ywdj \
--hive-drop-import-delims \
--map-column-java FYNR=String \
--lines-terminated-by "\n" \
-m 1
再次查看hive表数据条数:
成功。