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;
返回信息如下所示。