跳到主要内容
版本: 最新版本-3.5

验证到 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 中的 HiveIcebergHudiDelta 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_accountfalsetrue指定是否直接使用绑定到您的 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_accountfalsetrue指定是否直接使用绑定到您的 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"您要模拟的数据服务帐户。