引言
歡迎查閱本周的 Apache Doris 社區 FAQ 欄目!
在這個欄目中,每周將篩選社區反饋的熱門問題和話題,重點回答并進行深入探討。旨在為廣大用戶和開發者分享有關 Apache Doris 的常見問題。
通過這個每周 FAQ 欄目,希望幫助社區小伙伴更好地了解和應用 Apache Doris,促進經驗交流和技術共享。
SQL問題
Q1 dori建完倒排索引后,如何判斷sql是否走了索引
A1 可以通過 Query Profile 中的下面幾個指標分析倒排索引的加速效果:
- RowsInvertedIndexFiltered 倒排過濾掉的行數,可以與其他幾個 Rows 值對比分析索引過濾效果
- InvertedIndexFilterTime 倒排索引消耗的時間
- InvertedIndexSearcherOpenTime 倒排索引打開索引的時間
- InvertedIndexSearcherSearchTime 倒排索引內部查詢的時間
倒排索引內容可查閱:
https://doris.apache.org/zh-CN/docs/dev/table-design/index/inverted-index
Q2 doris動態分區的修改有什么注意事項
A2 注意數據不要出現分區交集,要注意歷史數據的保留時間,如果分區的區間設置不對可能出現歷史分區被刪除的情況:
ALTER TABLE example_db.my_table set (
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY", -- 注意區間start"dynamic_partition.start " = "",-- 注意區間history"dynamic_partition.history_partition_num " = "",-- 注意區間end
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "32"
);
分區修改內容可查閱
Q3 doris查詢時報runtime filter如何處理
A3 如下:
- 適當調大Session 變量:runtime_filter_wait_time_ms
- 后續Doris會發布一個更智能的等待策略
Runtime Filter內容可查閱
數據操作問題
Q4 JDBC 連接2.1.x 版本的Power BI報:Character set ‘utf8mb3’ is not supported by .Net.Framework
A4 該問題易在2.1.x 版本容易遇到,如果遇到該問題則需要把 JDBC Driver 升級到8.0.32。
Q5 Tableau連接Doris時報:SSL connection error:protocol version mismatch 無法連接到 MySQL 服務器
A5 該報錯原因是 Doris 開啟了 SSL 驗證,但是連接過程中未使用 SSL 連接,需要在 fe.conf 里面關閉 enable_ssl 變量。
Q6 連接 Hive Catalog 報:Caused by: java.lang.NullPointerException
如 fe.log 中有如下堆棧:
Caused by: java.lang.NullPointerExceptionat org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook.getFilteredObjects(AuthorizationMetaStoreFilterHook.java:78) ~[hive-exec-3.1.3-core.jar:3.1.3]at org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook.filterDatabases(AuthorizationMetaStoreFilterHook.java:55) ~[hive-exec-3.1.3-core.jar:3.1.3]at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getAllDatabases(HiveMetaStoreClient.java:1548) ~[doris-fe.jar:3.1.3]at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getAllDatabases(HiveMetaStoreClient.java:1542) ~[doris-fe.jar:3.1.3]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
A6 可以嘗試在 create catalog 語句中添加 如下參數 解決:
"metastore.filter.hook" =
"org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl"
Hive Catalog可查閱
Q7 使用 Stream Load 訪問 FE 的公網地址導入數據,被redirect重定向到內網 IP?
A7 當 stream load 的連接目標為 FE 的 http 端口時,FE 僅會隨機選擇一臺 BE 節點做 http 307 redirect 操作,因此用戶的請求實際是發送給 FE 指派的某一個 BE 的。
而 redirect 返回的是 BE 的 ip,也即內網 IP。所以如果你是通過 FE 的公網 IP 發送的請求,很有可能因為 redirect 到內網地址而無法連接。
通常的做法,一種是確保自己能夠訪問內網 IP 地址,或者是給所有 BE 上層架設一個負載均衡,然后直接將 stream load 請求發送到負載均衡器上,由負載均衡將請求透傳到 BE 節點。
運維常見問題
Q8 doris表drop后,如何讓對應的tablet快速清理掉
A8 如下:
-- 先設置回收站時間為0
ADMIN SET FRONTEND CONFIG ("catalog_trash_expire_second" = "0");
-- 再清空回收站
ADMIN CLEAN TRASH
-- 再恢復回收站時間
ADMIN SET FRONTEND CONFIG ("catalog_trash_expire_second" = "86400");
-- 查看回收站中可回收的庫,表或分區元數據信息
SHOW CATALOG RECYCLE BIN;
Q9 通過 DECOMMISSION 下線 BE 節點時,為什么總會有部分 tablet 殘留?
A9 在下線過程中,通過 show backends 查看下線節點的 tabletNum,會觀察到 tabletNum 數量在減少,說明數據分片正在從這個節點遷移走。當數量減到 0 時,系統會自動刪除這個節點。
但某些情況下,tabletNum 下降到一定數值后就不變化。這通常可能有以下兩種原因:
1. 這些 tablet 屬于剛被刪除的表、分區或物化視圖。
而剛被刪除的對象會保留在回收站中。而下線邏輯不會處理這些分片。
可以通過修改 FE 的配置參數 catalog_trash_expire_second 來修改對象在回收站中駐留的時間。
當對象從回收站中被刪除后,這些 tablet 就會被處理了。2. 這些 tablet 的遷移任務出現了問題。
此時需要通過 show proc "/cluster_balance" 來查看具體任務的錯誤了。
對于以上情況,可以先通過
show proc “/cluster_health/tablet_health”;
查看集群是否還有 unhealthy 的分片,如果為 0,
則可以直接通過 drop backend 語句刪除這個 BE。
否則,還需要具體查看不健康分片的副本情況。
Doris BE節點下線卡住?快速排障技巧全攻略!
其它問題
Q10 初識Doris,有什么方式可以快速體驗下Doris實時數倉的鏈路?
A10 基于Docker搭建一套演示環境,分鐘級快速體驗Doris實時數倉的"采-存-用"鏈路:Doris之旅基礎篇|Docker快速體驗(二)