场景
由于mysql库中有的字段会有换行符,导致数据存入hive后,条数增多(每个换行符会多出带有null值得一条数据),导致统计数据不准确。
解决方法
利用一下两个参数可以实现对换行等特殊字符的替换或者删除
--hive-delims-replacement替换
--hive-drop-import-delims删除
sqoop官网解释
- -hive-drop-import-delims | 导入到Hive时从字符串字段中 删除\ n,\ r和\ 01。 |
- -hive-delims-replacement | 导入到Hive时,使用用户定义的字符串 替换字符串字段中的\ n,\ r和\ 01。 |
oracle 也能使用这两个方法
前提是去换行符的字段为string类型,如果不为最好通过设置列名类型为string类型
--map-column-java 列名=String
--map-columns-java 官网翻译为Override default mapping from SQL type to Java type for configured columns.为已配置列重写从SQL类型到Java类型的默认映射。把列类型映射为java类型string