Paimon catalog
StarRocks 从 v3.1 开始支持 Paimon catalog。
Paimon catalog 是一种 external catalog,可以让您在不进行数据导入的情况下查询 Apache Paimon 的数据。
此外,您还可以基于 Paimon catalog 使用 INSERT INTO 直接转换和导入 Paimon 的数据。
为了确保在您的 Paimon 集群上成功执行 SQL 工作负载,您的 StarRocks 集群必须能够访问 Paimon 集群的存储系统和元存储。StarRocks 支持以下存储系统和元存储:
- 分布式文件系统(HDFS)或对象存储,如 AWS S3、Microsoft Azure Storage、Google GCS 或其他兼容 S3 的存储系统(例如 MinIO)
- 元存储,如您的文件系统或 Hive 元存储
使用注意事项
您只能使用 Paimon catalog 查询数据。您不能使用 Paimon catalog 删除、删除或插入数据到您的 Paimon 集群中。
集成准备
在创建 Paimon catalog 之前,请确保您的 StarRocks 集群可以与 Paimon 集群的存储系统和元存储集成。
AWS IAM
如果您的 Paimon 集群使用 AWS S3 作为存储,请选择合适的身份验证方法并进行必要的准备,以确保您的 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 文件的开头添加
export HADOOP_USER_NAME="<user_name>"
来设置用户名。在这些文件中设置用户名后,重启每个 FE 和每个 BE 或 CN 以使参数设置生效。您只能为每个 StarRocks 集群设置一个用户名。 - 当您查询 Paimon 数据时,您的 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 路径。
- 如果您的 HDFS 集群启用了 View File System (ViewFs):将您的 HDFS 集群的 core-site.xml 文件添加到每个 FE 的 $FE_HOME/conf 路径和每个 BE 或 CN 的 $BE_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 文件中。在此示例中,/etc/krb5.conf
是 krb5.conf 文件的保存路径。您可以根据需要修改路径。
创建 Paimon catalog
语法
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "paimon",
CatalogParams,
StorageCredentialParams,
)
参数
catalog_name
Paimon catalog 的名称。命名规则如下:
- 名称可以包含字母、数字 (0-9) 和下划线 (_)。必须以字母开头。
- 名称区分大小写,长度不能超过 1023 个字符。
comment
Paimon catalog 的描述。此参数是可选的。
type
数据源的类型。将值设置为 paimon
。
CatalogParams
关于 StarRocks 如何访问 Paimon 集群元数据的一组参数。
下表描述了您需要在 CatalogParams
中配置的参数。
参数 | 是否必需 | 描述 |
---|---|---|
paimon.catalog.type | 是 | 您用于 Paimon 集群的元存储类型。将此参数设置为 filesystem 或 hive 。 |
paimon.catalog.warehouse | 是 | 您的 Paimon 数据的仓库存储路径。 |
hive.metastore.uris | 否 | 您的 Hive 元存储的 URI。格式:thrift://<metastore_IP_address>:<metastore_port> 。如果您的 Hive 元存储启用了高可用性(HA),您可以指定多个元存储 URI,并用逗号(, )分隔,例如,"thrift://<metastore_IP_address_1>:<metastore_port_1>,thrift://<metastore_IP_address_2>:<metastore_port_2>,thrift://<metastore_IP_address_3>:<metastore_port_3>" 。 |
注意
如果您使用 Hive 元存储,您必须在查询 Paimon 数据之前将您的 Hive 元存储节点的主机名和 IP 地址的映射添加到
/etc/hosts
路径。否则,当您启动查询时,StarRocks 可能无法访问您的 Hive 元存储。
StorageCredentialParams
关于 StarRocks 如何与您的存储系统集成的一组参数。此参数集是可选的。
如果您使用 HDFS 作为存储,则无需配置 StorageCredentialParams
。
如果您使用 AWS S3、其他兼容 S3 的存储系统、Microsoft Azure Storage 或 Google GCS 作为存储,则必须配置 StorageCredentialParams
。
AWS S3
如果您选择 AWS S3 作为 Paimon 集群的存储,请采取以下操作之一:
-
要选择基于实例配置文件的身份验证方法,请按如下方式配置
StorageCredentialParams
:"aws.s3.use_instance_profile" = "true",
"aws.s3.endpoint" = "<aws_s3_endpoint>"