通过Sqoop读取MySQL数据并写parquet文件到OBS时失败
用户问题
通过Sqoop读取MySQL数据,然后直接写到OBS,指定parquet格式时写入报错,不指定parquet时不报错。
问题现象
原因分析
parquet格式不支持hive3,用Hcatalog方式写入。
处理步骤
采用Hcatalog的方式,参数指定对应的Hive库和表,需要修改SQL语句指定到具体字段(需要修改脚本)。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。
原来的脚本:
sqoop import --connect 'jdbc:mysql://10.160.5.65/huawei_pos_online_00?zeroDateTimeBehavior=convertToNull' --username root --password xxx --split-by id --num-mappers 2 --query 'select * from pos_remark where 1=1 and $CONDITIONS' --target-dir obs://za-test/dev/huawei_pos_online_00/pos_remark --delete-target-dir --null-string '\\N‘ --null-non-string '\\N‘ --as-parquetfile
修改后的脚本(可以执行成功):
sqoop import --connect 'jdbc:mysql://10.160.5.65/huawei_pos_online_00?zeroDateTimeBehavior=convertToNull' --username root --password xxx --split-by id --num-mappers 2 --query 'select id,pos_case_id,pos_transaction_id,remark,update_time,update_user,is_deleted,creator,modifier,gmt_created,gmt_modified,update_user_id,tenant_code from pos_remark where 1=1 and $CONDITIONS‘ --hcatalog-database huawei_dev --hcatalog-table ods_pos_remark