StarRocks 3.x版本在進行資料湖分析時,支援相容Trino文法。本文介紹如何在StarRocks中利用Trino文法進行資料湖分析,特別是針對從Trino遷移至StarRocks的使用者,旨在實現無縫切換且無需更改原有SQL語句。
前提條件
已建立存算分離版執行個體,詳情請參見快速使用存算分離版執行個體。
已建立包含Hive服務的叢集,詳情請參見建立叢集。
重要請確保EMR叢集和Serverless StarRocks執行個體使用相同的VPC。
啟用Trino文法
臨時生效方式:在您的用戶端命令列中執行
SET sql_dialect = 'trino';命令,即可為本次會話切換至Trino的文法規則及函數集。此設定局限於當前會話,不影響其他使用者或後續會話。全域生效方式:若希望所有建立立的會話都預設使用Trino文法,您需要執行管理員權限命令
SET GLOBAL sql_dialect = 'trino';。重要此操作影響範圍更廣,請謹慎操作。
使用樣本
StarRocks的日期函數dayofyear在Trino中對應函數為day_of_year或doy。如果您更習慣使用Trino的函數寫法,就可以通過設定sql_dialect解決此問題。本文就以該日期函數為例,向您介紹如何在StarRocks中使用Trino文法及函數。
建立測試表。
串連StarRocks執行個體。
在執行個體列表頁面,單擊操作列的串連執行個體。
在建立串連頁簽,配置以下資訊。
參數
樣本
描述
地區
華東1(杭州)
選擇已建立的StarRocks執行個體所在的物理位置。
執行個體
StarRocks_Serverlesss
選擇已建立的StarRocks執行個體的名稱。
串連名稱
Connection_Serverlesss
執行個體名稱,自訂輸入。
長度限制為1~64字元,僅可使用中文、字母、數字、短劃線(-)和底線(_)。
使用者名稱
根據實際情況輸入
預設初始使用者名稱為admin,您可以選擇使用該使用者名稱進行串連,或者根據需要建立其他使用者。
密碼
根據實際情況輸入
StarRocks執行個體中已建立的使用者名稱對應的密碼。
單擊測試連通性。
驗證通過後,單擊確定。
進入SQL Editor頁面,即可執行相關的SQL。更多使用資訊,請參見通過EMR StarRocks Manager串連StarRocks執行個體。
建立External Hive Catalog。
在SQL Editor的查詢列表頁面,單擊
表徵圖。輸入以下命令,單擊運行,建立Hive資料來源。
本文樣本建立的是Hive資料來源,您也可以建立Paimon、Iceberg、Hudi或Delta Lake等任意一種資料湖格式的External Catalog。
CREATE EXTERNAL CATALOG hive_dlf PROPERTIES ( "type" = "hive", "hive.metastore.type" = "DLF" );
執行查詢。
啟用Trino sql_dialect前
use hive_dlf.test_db; select doy(d) from test_trino;返回資訊報錯,提示
(1064, 'Getting analyzing error from line 1, column 7 to line 1, column 12. Detail message: No matching function with signature: doy(date).')。啟用Trino sql_dialect後
use hive_dlf.test_db; -- 開啟Trino sql_dialect。 set sql_dialect = 'trino'; -- 重新執行查詢操作。 select doy(d) from test_trino;返回資訊如下所示。
