更新时间:2024-11-29 GMT+08:00

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