Delta Lake catalog
Delta Lake catalog 是一种 external catalog,允许您在不导入的情况下查询 Delta Lake 中的数据。
此外,您还可以通过基于 Delta Lake catalogs 使用 INSERT INTO 直接转换和导入 Delta Lake 中的数据。StarRocks 从 v2.5 开始支持 Delta Lake catalogs。
为了确保在 Delta Lake 集群上成功执行 SQL 工作负载,您的 StarRocks 集群必须能够访问 Delta Lake 集群的存储系统和元存储。StarRocks 支持以下存储系统和元存储:
-
分布式文件系统 (HDFS) 或对象存储,如 AWS S3、Microsoft Azure Storage、Google GCS 或其他兼容 S3 的存储系统(例如 MinIO)
-
元存储如 Hive metastore 或 AWS Glue
如果选择 AWS S3 作为存储,可以使用 HMS 或 AWS Glue 作为元存储。如果选择其他存储系统,则只能使用 HMS 作为元存储。
使用说明
- StarRocks 支持的 Delta Lake 文件格式是 Parquet。Parquet 文件支持以下压缩格式:SNAPPY、LZ4、ZSTD、GZIP 和 NO_COMPRESSION。
- StarRocks 不支持 Delta Lake 的数据类型为 MAP 和 STRUCT。
集成准备
在创建 Delta Lake catalog 之前,请确保您的 StarRocks 集群可以与 Delta Lake 集群的存储系统和元存储集成。
AWS IAM
如果您的 Delta Lake 集群使用 AWS S3 作为存储或 AWS Glue 作为元存储,请选择适合的身份验证方法并进行必要的准备,以确保您的 StarRocks 集群可以访问相关的 AWS 云资源。
推荐以下身份验证方法:
- 实例配置文件
- 假设角色
- IAM 用户
在上述三种身份验证方法中,实例配置文件是最广泛使用的。
有关更多信息,请参见 AWS IAM 中的身份验证准备。
HDFS
如果选择 HDFS 作为存储,请按以下步骤配置您的 StarRocks 集群:
-
(可选)设置用于访问 HDFS 集群和 Hive 元存储的用户名。默认情况下,StarRocks 使 用 FE 和 BE 或 CN 进程的用户名访问 HDFS 集群和 Hive 元存储。您也可以通过在每个 FE 的 fe/conf/hadoop_env.sh 文件和每个 BE 或 CN 的 be/conf/hadoop_env.sh 或 cn/conf/hadoop_env.sh 文件开头添加
export HADOOP_USER_NAME="<user_name>"来设置用户名。设置完成后,重启每个 FE 和每个 BE 或 CN 以使参数设置生效。每个 StarRocks 集群只能设置一个用户名。 -
当您查询 Delta Lake 数据时,StarRocks 集群的 FEs 和 BEs 或 CNs 使用 HDFS 客户端访问 HDFS 集群。在大多数情况下,您无需配置 StarRocks 集群即可实现此目的,StarRocks 使用默认配置启动 HDFS 客户端。仅在以下情况下需要配置 StarRocks 集群:
- 启用了 HDFS 集群的高可用性 (HA):将 HDFS 集群的 hdfs-site.xml 文件添加到每个 FE 的 $FE_HOME/conf 路径和每个 BE 或 CN 的 $BE_HOME/conf 或 $CN_HOME/conf 路径。
- 启用了 HDFS 集群的 View File System (ViewFs):将 HDFS 集群的 core-site.xml 文件添加到每个 FE 的 $FE_HOME/conf 路径和每个 BE 或 CN 的 $BE_HOME/conf 或 $CN_HOME/conf 路径。
备注如果在发送查询时返回未知主机错误,您必须将 HDFS 集群节点的主机名和 IP 地址映射添加到 /etc/hosts 路径。
Kerberos 认证
如果您的 HDFS 集群或 Hive 元存储启用了 Kerberos 认证,请按以下步骤配置您的 StarRocks 集群:
- 在每个 FE 和每个 BE 或 CN 上运行
kinit -kt keytab_path principal命令,从密钥分发中心 (KDC) 获取票证授予票证 (TGT)。要运行此命令,您必须具有访问 HDFS 集群和 Hive 元存储的权限。请注意,使用此命令访问 KDC 是时间敏感的。因此,您需要使用 cron 定期运行此命令。 - 将
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"添加到每个 FE 的 $FE_HOME/conf/fe.conf 文件和每个 BE 或 CN 的 $BE_HOME/conf/be.conf 或 $CN_HOME/conf/cn.conf 文件中。在此示例中,/etc/krb5.conf是 krb5.conf 文件的保存路径。您可以根据需要修改路径。
创建 Delta Lake catalog
语法
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "deltalake",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)
参数
catalog_name
Delta Lake catalog 的名称。命名规则如下:
- 名称可以包含字母、数字 (0-9) 和下划线 (_)。必须以字母开头。
- 名称区分大小写,长度不能超过 1023 个字符。
comment
Delta Lake catalog 的描述。此参数是可选的。
type
数据源的类型。将值设置为 deltalake。