文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Sqoop/ 通过Sqoop读取MySQL数据并写parquet文件到OBS时失败
更新时间:2024-05-28 GMT+08:00

通过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