StarRocks 3.x版本在進行數據湖分析時,支持兼容Trino語法。本文介紹如何在StarRocks中利用Trino語法進行數據湖分析,特別是針對從Trino遷移至StarRocks的用戶,旨在實現無縫切換且無需更改原有SQL語句。
前提條件
已創建數據湖分析版StarRocks實例,詳情請參見快速使用數據湖分析版實例。
已創建包含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;
返回信息如下所示。