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: [deal_date], 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 [hs_f1r_2024_ds] has already been used
- 现象描述:导入显示状态为Canceled,ETL详情里显示type:ETL_RUN_FAIL; msg:errCode = 2, detailMessage = Label [hs_f1r_2024_ds] has already been used, relate to txn [84922666]
- 可能原因:导入设置的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、集群元数据异常。该情况需联系运维人员排查。