Sqoop导入hive数据库NULL值处理
来源:互联网 发布:relex软件 编辑:程序博客网 时间:2024/06/07 08:34
最近用sqoop将mysql的一张表导入到hive中,发现以前is null的字段导入到hive的时候,被转换为了字符串’NULL’或’null’。
当导入的时候加上–direct选项的时候,null值导入变成了字符串’NULL’,命令如下:
sqoop import \ --connect "jdbc:mysql://${hostname}:3306/${db_name}?useUnicode=true&characterEncoding=UTF-8" \ --username ${user_name} \ --password ${pwd} \ --table ${table_name} \ --null-string '\\N' \ --null-non-string '\\N' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --hive-import \ --hive-overwrite \ --direct \ -z \ --compression-codec lzo \ -m 1 \ --hive-table ${table_name}
当导入的时候去掉–direct选项的时候,null值导入变成了字符串’null’。
然后去网上搜了资料说需要加–null-string ‘\N’ –null-non-string ‘\N’选项,继续尝试,发现还是不行,没有任何用处。
然后我去翻看了一下hive官方文档关于null值的描述,发现还需要在表级设置’serialization.null.format’参数。
alter table ${table_name} SET SERDEPROPERTIES('serialization.null.format' = '\\N');
然后导入的时候,一定要注意去掉–direct选项:
sqoop import \ --connect "jdbc:mysql://${hostname}:3306/${db_name}?useUnicode=true&characterEncoding=UTF-8" \ --username ${user_name} \ --password ${pwd} \ --table ${table_name} \ --null-string '\\N' \ --null-non-string '\\N' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --hive-import \ --hive-overwrite \ -z \ --compression-codec lzo \ -m 1 \ --hive-table ${table_name}
这个坑终于趟过去了。
阅读全文
0 0
- Sqoop导入hive数据库NULL值处理
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- Sqoop导入关系数据库到Hive
- HIVE NULL 值处理
- Sqoop导入hive注意事项
- Sqoop增量导入Hive
- Sqoop导入hive注意事项
- sqoop导入关系型数据库的数据至hive
- sqoop导入数据到关系型数据库到hive
- sqoop 从mysql数据库导入到hive表格错误解决方法
- sqoop实现mysql到hive数据库的导入导出
- sqoop导入数据到hive
- 巴什博奕
- Hdu 6073 Matching In Multiplication 二分图完美匹配
- node.js 连接 mssql 代码
- Nand Flash学习笔记1-Read的介绍
- 多态与O2
- Sqoop导入hive数据库NULL值处理
- unity 音乐可视化
- 抽象类和接口
- android pull xml
- LeetCode #49
- java字符与对应Ascii码互转
- 存储过程的使用
- AndroidStudio修改包名
- Xilinx ZYNQ 7000+Vivado2015.2系列(四)之GPIO的三种方式:MIO、EMIO、AXI_GPIO