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、集群元數據異常。該情況需聯系運維人員排查。