Sqoop读mysql,写parquet文件到OBS失败
用户问题
sqoop读mysql数据,然后直接写到obs,指定parquet格式时写入报错,不指定parquet时不报错。
问题现象
原因分析
parquet不支持hive3,用Hcatalog方式写入。
处理步骤
采用Hcatalog的方式:参数指定对应的hive库和表,需要修改SQL语句指定到具体字段(需要客户修改脚本)。
具体如下:
客户原来的脚本:
sqoop import --connect 'jdbc:mysql://10.160.5.65/xxx_pos_online_00?zeroDateTimeBehavior=convertToNull' --username root --password Mrs@2022
--split-by id
--num-mappers 2
--query 'select * from pos_remark where 1=1 and $CONDITIONS'
--target-dir obs://za-test/dev/xxx_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/xxx_pos_online_00?zeroDateTimeBehavior=convertToNull' --username root --password Mrs@2022
--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 xxx_dev
--hcatalog-table ods_pos_remark