Doris-HDFS LOAD常见问题汇总(一)
本文分享自天翼云开发者社区《Doris-HDFS LOAD常见问题汇总(一)》,作者:刘****阳1、HDFS Load导入失败:no partition for this tuple.
[*]现象描述:导入显示状态为Canceled,URL错误详情显示 no partition for this tuple.
[*]可能原因:
1、分区字段没有值,语句种未设定该字段
2、字段有值,但是转换有问题,一般常见202405月分区导入,Doris需要加上日,如20240501进行时间转换
[*]定位方式:
[*]查询任务状态show load where label="" from db_name;
[*]show load warnings on "URL" 。日志详情里显示no partition for this tuple
[*]解决方案:
1、首先判断Doris表有没有对应的分区。没有则新建分区
ALTER TABLE example_db.my_table ADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));
2、查看分区值是否符合要求,一般需要到天,例如20240501即可自动转换日期值,其他数据类型转换错误可select 转换确认是否能显示正确结果。
2、HDFS Load导入失败:Fail to parse columnsFromPath
[*]现象描述:导入显示状态为Canceled,ETL详情里显示type:ETL_RUN_FAIL; msg:errCode = 2, detailMessage = Fail to parse columnsFromPath, expected: , filePath: hdfs://XXX/xxx_mobile_XXXXX_new/000000_0
[*]可能原因:导入语句里配置了从HDFS路径里获取deal_date字段值,但是实际路径里没有该字段路径,导致解析失败。
[*]定位方式:查看导入语句里是否有COLUMNS FROM PATH AS (deal_date)语句。
[*]解决方案:
[*]1、如果HDFS路径正常,则需要将语句中的COLUMNS FROM PATH AS (deal_date)删除或替换成正确的路径。
[*]2、如果HDFS路径设置错误,则修改HDFS路径。
3、HDFS Load导入失败:Label has already been used
[*]现象描述:导入显示状态为Canceled,ETL详情里显示type:ETL_RUN_FAIL; msg:errCode = 2, detailMessage = Label has already been used, relate to txn
[*]可能原因:导入设置的Label已被使用,且未被清理。
[*]定位方式:show load where label="hs_f1r_2024_ds";是否存在成功记录。
[*]解决方案:
[*]Doris在数据导入时根据Label唯一来确认该批次导入未重复,因此Label在一个生命周期内只能有一个,当前集群默认保留3天,或200W个Label。假设为人为已知重复导入或重新导入有两种解决方案:
[*]修改本次Label。
[*]清理指定Label。clean label where label=""; 进行手动清理。因清理后会丢失导入记录,请谨慎采取。
4、HDFS Load导入失败:actual column number in csv file is less/more than schema column number
[*]现象描述:导入显示状态为Canceled,URL错误详情显示actual column number in csv file is less than schema column number.........
[*]可能原因:
[*]1、HDFS对应字段数少于Doris表结构的字段数
[*]2、HDFS对应的分隔符设置错误
[*]3、HDFS对应的分隔符在字段里也存在(more than)
[*]4、HDFS对应的字段数多于Doris表结构的字段数(more than)
[*]定位方式:
[*]1、比较HDFS对应字段数和Doris字段数是否对应。
[*]2、查看HDFS分隔符是否与设置的分隔符相对应。
[*]3、检查原始数据字段中是否含有与分隔符相同字符。
[*]解决方案:
[*]1、假如字段数未对应上则需重新创建Doris表对应字段。
[*]2、假如目标就是取部分字段,则需在导入语句中正确设置Set部分属性,等号左边为Doris字段,右边为HDFS解析字段。
[*]3、分隔符错误。一般会提示actual number: 1, schema column number: 181; line delimiter: [修改对应分隔符后重新导入。分隔符可以咨询负责改原始表的同事,或者hadoop fs -head 该hdfs路径下的文件。hive默认为\0x01
[*]4、字段中存在指定分隔符,常见回车符或者其他相同字符,假设是相同字符,则修改原始表或者创建中间表。若为回车字符,则需判断是否允许部分记录过滤,若不允许请修改原始表数据。
HDFS Load导入执行后,Show Load为空。
[*]现象描述:load都执行了,怎么查询show load是空的?
show load where label = 'XXXXXXXXXXXXXXXXX9075004';
[*]可能原因:
[*]1、导入的Label被人为清理。
[*]2、集群导入的Label数超过了设置值被系统清理。
[*]3、集群导入的Label超过3天的过期时效,被系统清理了。
[*]定位方式:
[*]确认当前集群设置的Label数清理阈值:
[*]确认该导入是否是3天前的Label。
[*]确认该导入Label不会被清理。
[*]解决方案:
[*]1、假设当前Label设置的阈值过小,修改集群设置
ADMIN SET ALL FRONTENDS CONFIG ("key" = "value");
[*]过期时间:
label_keep_max_second
默认值:3 * 24 * 3600 (3 天)
[*]保持的Label数量
label_num_threshold=1000000
默认值:800
[*]2、在能开调度日志里检查确认Label计算无误,确认未被人为清理。
[*]3、集群元数据异常。该情况需联系运维人员排查。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]