searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Doris-HDFS LOAD常见问题汇总(一)

2024-09-27 09:20:40
64
0

1、HDFS Load导入失败:no partition for this tuple.

  • 现象描述:导入显示状态为Canceled,URL错误详情显示 no partition for this tuple.
  • 可能原因:

              1、分区字段没有值,语句种未设定该字段

              2、字段有值,但是转换有问题,一般常见202405月分区导入,Doris需要加上日,如20240501进行时间转换

  • 定位方式:
      1. 查询任务状态show load where label="" from db_name;
      2. 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。假设为人为已知重复导入或重新导入有两种解决方案:
        1. 修改本次Label。
        2. 清理指定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天的过期时效,被系统清理了。
  • 定位方式:
      1. 确认当前集群设置的Label数清理阈值:
      2. 确认该导入是否是3天前的Label。
      3. 确认该导入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、集群元数据异常。该情况需联系运维人员排查。
0条评论
0 / 1000
刘****阳
6文章数
0粉丝数
刘****阳
6 文章 | 0 粉丝
原创

Doris-HDFS LOAD常见问题汇总(一)

2024-09-27 09:20:40
64
0

1、HDFS Load导入失败:no partition for this tuple.

  • 现象描述:导入显示状态为Canceled,URL错误详情显示 no partition for this tuple.
  • 可能原因:

              1、分区字段没有值,语句种未设定该字段

              2、字段有值,但是转换有问题,一般常见202405月分区导入,Doris需要加上日,如20240501进行时间转换

  • 定位方式:
      1. 查询任务状态show load where label="" from db_name;
      2. 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。假设为人为已知重复导入或重新导入有两种解决方案:
        1. 修改本次Label。
        2. 清理指定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天的过期时效,被系统清理了。
  • 定位方式:
      1. 确认当前集群设置的Label数清理阈值:
      2. 确认该导入是否是3天前的Label。
      3. 确认该导入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、集群元数据异常。该情况需联系运维人员排查。
文章来自个人专栏
MPP-Doris应用
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0