验证到 Google Cloud Storage
验证方法
从 v3.0 开始,StarRocks 支持使用以下验证方法之一来访问 Google Cloud Storage (GCS)
-
基于 VM 的验证
使用附加到 Google Cloud Compute Engine 的凭据来验证 GCS。
-
基于服务帐户的验证
使用服务帐户来验证 GCS。
-
基于模拟的验证
使服务帐户或虚拟机 (VM) 实例模拟另一个服务帐户。
使用场景
StarRocks 可以在以下场景中验证到 GCS
- 从 GCS 批量加载数据。
- 从 GCS 备份数据和将数据恢复到 GCS。
- 查询 GCS 中的 Parquet 和 ORC 文件。
- 查询 GCS 中的 Hive、Iceberg、Hudi 和 Delta Lake 表。
在本主题中,Hive catalog、文件外部表 和 Broker Load 用作示例,以展示 StarRocks 如何在不同场景下与 GCS 集成。有关示例中的 StorageCredentialParams
的信息,请参阅本主题的“参数”部分。
注意
StarRocks 仅支持根据 gs 协议从 GCS 加载数据或直接查询文件。因此,当您从 GCS 加载数据或查询文件时,您必须在文件路径中包含
gs
作为前缀。
外部 Catalog
使用 CREATE EXTERNAL CATALOG 语句创建一个名为 hive_catalog_gcs
的 Hive catalog,如下所示,以便从 GCS 查询文件
CREATE EXTERNAL CATALOG hive_catalog_gcs
PROPERTIES
(
"type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
StorageCredentialParams
);
文件外部表
使用 CREATE EXTERNAL TABLE 语句创建一个名为 external_table_gcs
的文件外部表,如下所示,以便从 GCS 查询名为 test_file_external_tbl
的数据文件,而无需任何 metastore
CREATE EXTERNAL TABLE external_table_gcs
(
id varchar(65500),
attributes map<varchar(100), varchar(2000)>
)
ENGINE=FILE
PROPERTIES
(
"path" = "gs:////test-gcs/test_file_external_tbl",
"format" = "ORC",
StorageCredentialParams
);
Broker Load
使用 LOAD LABEL 语句创建一个标签为 test_db.label000
的 Broker Load 作业,以便将 GCS 中的数据批量加载到 StarRocks 表 target_table
中
LOAD LABEL test_db.label000
(
DATA INFILE("gs://bucket_gcs/test_brokerload_ingestion/*")
INTO TABLE target_table
FORMAT AS "parquet"
)
WITH BROKER
(
StorageCredentialParams
);
参数
StorageCredentialParams
表示一个参数集,用于描述如何使用不同的身份验证方法验证到 GCS。
基于 VM 的验证
如果您的 StarRocks 集群部署在 Google Cloud Platform (GCP) 上托管的 VM 实例上,并且您想使用该 VM 实例来验证 GCS,请按如下方式配置 StorageCredentialParams
"gcp.gcs.use_compute_engine_service_account" = "true"
下表描述了需要在 StorageCredentialParams
中配置的参数。
参数 | 默认值 | 值 示例 | 描述 |
---|---|---|---|
gcp.gcs.use_compute_engine_service_account | false | true | 指定是否直接使用绑定到您的 Compute Engine 的服务帐户。 |
基于服务帐户的验证
如果您直接使用服务帐户来验证 GCS,请按如下方式配置 StorageCredentialParams
"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<google_service_private_key_id>",
"gcp.gcs.service_account_private_key" = "<google_service_private_key>"
下表描述了需要在 StorageCredentialParams
中配置的参数。
参数 | 默认值 | 值 示例 | 描述 |
---|---|---|---|
gcp.gcs.service_account_email | "" | "user@hello.iam.gserviceaccount.com " | 在创建服务帐户时生成的 JSON 文件中的电子邮件地址。 |
gcp.gcs.service_account_private_key_id | "" | "61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea" | 在创建服务帐户时生成的 JSON 文件中的私钥 ID。 |
gcp.gcs.service_account_private_key | "" | "-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n" | 在创建服务帐户时生成的 JSON 文件中的私钥。 |
基于模拟的验证
使 VM 实例模拟服务帐户
如果您的 StarRocks 集群部署在 GCP 上托管的 VM 实例上,并且您想使该 VM 实例模拟服务帐户,以便 StarRocks 可以从服务帐户继承访问 GCS 的权限,请按如下方式配置 StorageCredentialParams
"gcp.gcs.use_compute_engine_service_account" = "true",
"gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"
下表描述了需要在 StorageCredentialParams
中配置的参数。
参数 | 默认值 | 值 示例 | 描述 |
---|---|---|---|
gcp.gcs.use_compute_engine_service_account | false | true | 指定是否直接使用绑定到您的 Compute Engine 的服务帐户。 |
gcp.gcs.impersonation_service_account | "" | "hello" | 您要模拟的服务帐户。 |
使服务帐户模拟另一个服务帐户
如果您想使服务帐户(暂时命名为 meta 服务帐户)模拟另一个服务帐户(暂时命名为数据服务帐户),并使 StarRocks 从数据服务帐户继承访问 GCS 的权限,请按如下方式配置 StorageCredentialParams
"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<meta_google_service_account_email>",
"gcp.gcs.service_account_private_key" = "<meta_google_service_account_email>",
"gcp.gcs.impersonation_service_account" = "<data_google_service_account_email>"
下表描述了需要在 StorageCredentialParams
中配置的参数。
参数 | 默认值 | 值 示例 | 描述 |
---|---|---|---|
gcp.gcs.service_account_email | "" | "user@hello.iam.gserviceaccount.com " | 在创建元服务帐户时生成的 JSON 文件中的电子邮件地址。 |
gcp.gcs.service_account_private_key_id | "" | "61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea" | 在创建元服务帐户时生成的 JSON 文件中的私钥 ID。 |
gcp.gcs.service_account_private_key | "" | "-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n" | 在创建元服务帐户时生成的 JSON 文件中的私钥。 |
gcp.gcs.impersonation_service_account | "" | "hello" | 您要模拟的数据服务帐户。 |