Iceberg catalog
Iceberg catalog は、StarRocks が v2.4 以降でサポートする外部 catalog の一種です。Iceberg catalog を使用すると、以下のことが可能です。
- Iceberg に保存されたデータを直接クエリし、手動でテーブルを作成する必要がありません。
- INSERT INTO または非同期マテリアライズドビュー(v2.5 以降でサポート)を使用して、Iceberg に保存されたデータを処理し、StarRocks にデータをロードします。
- StarRocks 上で Iceberg データベースやテーブルを作成または削除したり、StarRocks テーブルから Parquet 形式の Iceberg テーブルにデータをシンクする 操作を INSERT INTO を使用して行います(この機能は v3.1 以降でサポートされています)。
Iceberg クラスターで SQL ワークロードを成功させるためには、StarRocks クラスターが Iceberg クラスターのストレージシステムとメタストアにアクセスできる必要があります。StarRocks は以下のストレージシステムとメタストアをサポートしています。
-
分散ファイルシステム (HDFS) または AWS S3、Microsoft Azure Storage、Google GCS、その他の S3 互換ストレージシステム(例:MinIO)などのオブジェクトストレージ
-
Hive metastore、AWS Glue、または Tabular などのメタストア
- ストレージとして AWS S3 を選択した場合、メタストアとして HMS または AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとして HMS のみを使用できます。
- メタストアとして Tabular を選択した場合、Iceberg REST catalog を使用する必要があります 。
使用上の注意
StarRocks を使用して Iceberg からデータをクエリする際には、以下の点に注意してください。
ファイル形式 | 圧縮形式 | Iceberg テーブルバージョン |
---|---|---|
Parquet | SNAPPY, LZ4, ZSTD, GZIP, NO_COMPRESSION |
|
ORC | ZLIB, SNAPPY, LZO, LZ4, ZSTD, NO_COMPRESSION |
|
統合準備
Iceberg catalog を作成する前に、StarRocks クラスターが Iceberg クラスターのストレージシステムとメタストアと統合できることを確認してください。
ストレージ
ストレージタイプに合ったタブを選択してください。
- AWS S3
- HDFS
Iceberg クラスターが AWS S3 をストレージとして使用する場合、または AWS Glue をメタストアとして使用する場合、適切な認証方法を選択し、StarRocks クラスターが関連する AWS クラウドリソースにアクセスできるように必要な準備を行ってください。
推奨される認証方法は以下の通りです。
- インスタンスプロファイル
- 想定ロール
- IAM ユーザー
上記の3つの認証方法の中で、インスタンスプロファイルが最も広く使用されています。
詳細については、AWS IAM での認証準備を参照してください。
HDFS をストレージとして選択した場合、StarRocks クラスターを次のように設定します。
-
(オプション)HDFS クラスターおよび Hive metastore にアクセスするためのユーザー名を設定します。デフォルトでは、StarRocks は FE および BE または CN プロセスのユーザー名を使用して HDFS クラスターおよび Hive metastore にアクセスします。また、各 FE の fe/conf/hadoop_env.sh ファイルの先 頭、および各 BE の be/conf/hadoop_env.sh ファイルまたは各 CN の cn/conf/hadoop_env.sh ファイルの先頭に
export HADOOP_USER_NAME="<user_name>"
を追加することでユーザー名を設定することもできます。これらのファイルでユーザー名を設定した後、各 FE および各 BE または CN を再起動してパラメータ設定を有効にします。StarRocks クラスターごとに1つのユーザー名しか設定できません。 -
Iceberg データをクエリする際、StarRocks クラスターの FEs および BEs または CNs は HDFS クライアントを使用して HDFS クラスターにアクセスします。ほとんどの場合、その目的を達成するために StarRocks クラスターを設定する必要はなく、StarRocks はデフォルトの設定を使用して HDFS クライアントを起動します。次の状況でのみ StarRocks クラスターを設定する必要があります。
- HDFS クラスターに高可用性 (HA) が有効になっている場合: HDFS クラスターの hdfs-site.xml ファイルを各 FE の $FE_HOME/conf パス、および各 BE の $BE_HOME/conf パスまたは各 CN の $CN_HOME/conf パスに追加します。
- HDFS クラスターに View File System (ViewFs) が有効になっている場合: HDFS クラスターの core-site.xml ファイルを各 FE の $FE_HOME/conf パス、および各 BE の $BE_HOME/conf パスまたは各 CN の $CN_HOME/conf パスに追加します。
クエリを送信した際に不明なホストを示すエラーが返された場合、HDFS クラスターのノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。
Kerberos 認証
HDFS クラスターまたは Hive metastore に Kerberos 認証が有効になっている場合、StarRocks クラスターを次のように設定します。
- 各 FE および各 BE または CN で
kinit -kt keytab_path principal
コマンドを実行して、Key Distribution Center (KDC) から Ticket Granting Ticket (TGT) を取得します。このコマンドを実行するには、HDFS クラスターおよび Hive metastore へのアクセス権限が必要です。このコマンドを使用して KDC にアクセスすることは時間に敏感であるため、cron を使用してこのコマンドを定期的に実行する必要があります。 - 各 FE の $FE_HOME/conf/fe.conf ファイルおよび各 BE の $BE_HOME/conf/be.conf ファイルまたは各 CN の $CN_HOME/conf/cn.conf ファイルに
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"
を追加します。この例では、/etc/krb5.conf
は krb5.conf ファイルの保存パスです。必要に応じてパスを変更できます。
Iceberg catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "iceberg",
MetastoreParams,
StorageCredentialParams,
MetadataRelatedParams
)
パラメータ
catalog_name
Iceberg catalog の名前。命名規則は次の通りです。
- 名前には文字、数字 (0-9)、およびアンダースコア (_) を含めることができます。文字で始まる必要があります。
- 名前は大文字と小文字を区別し、長さは 1023 文字を超えてはなりません。
comment
Iceberg catalog の説明。このパラメータはオプションです。
type
データソースのタイプ。値を iceberg
に設定します。
MetastoreParams
データソースのメタストアと StarRocks がどのように統合するかに関する一連のパラメータ。メタストアタイプに合ったタブを選択してください。
- Hive metastore
- AWS Glue
- REST
Hive metastore
データソースのメタストアとして Hive metastore を選択した場合、MetastoreParams
を次のように設定します。
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "<hive_metastore_uri>"
Iceberg データをクエリする前に、Hive metastore ノードのホスト名と IP アドレスのマッピングを /etc/hosts
パスに追加する必要があります。そうしないと、クエリを開始した際に StarRocks が Hive metastore にアクセスできない可能性があります。
次の表は、MetastoreParams
で設定する必要があるパラメータを説明しています。
-
iceberg.catalog.type
- 必須: はい
- 説明: Iceberg クラスターで使用するメタストアのタイプ。値を
hive
に設定します。
-
hive.metastore.uris
- 必須: はい
- 説明: Hive metastore の URI。形式:
thrift://<metastore_IP_address>:<metastore_port>
。
Hive metastore に高可用性 (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>"
。
AWS Glue
データソースのメタストアとして AWS Glue を選択した場合(AWS S3 をストレージとして選択した場合のみサポート)、次のいずれかの操作を行います。
-
インスタンスプロファイルベースの認証方法を選択する場合、
MetastoreParams
を次のように設定します。"iceberg.catalog.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.region" = "<aws_glue_region>" -
想定ロールベースの認証方法を選択する場合、
MetastoreParams
を次のように設定します。"iceberg.catalog.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.iam_role_arn" = "<iam_role_arn>",
"aws.glue.region" = "<aws_glue_region>" -
IAM ユーザーベースの認証方法を選択する場合、
MetastoreParams
を次のように設定します。"iceberg.catalog.type" = "glue",
"aws.glue.use_instance_profile" = "false",
"aws.glue.access_key" = "<iam_user_access_key>",
"aws.glue.secret_key" = "<iam_user_secret_key>",
"aws.glue.region" = "<aws_s3_region>"
AWS Glue 用の MetastoreParams
:
-
iceberg.catalog.type
- 必須: はい
- 説明: Iceberg クラスターで使用するメタストアのタイプ。値を
glue
に設定します。
-
aws.glue.use_instance_profile
- 必須: はい
- 説明: インスタンスプロファイルベースの認証方法と想定ロールベースの認証方法を有効にするかどうかを指定します。 有効な値:
true
およびfalse
。デフォルト値:false
。
-
aws.glue.iam_role_arn
- 必須: いいえ
- 説明: AWS Glue Data Catalog に対する権限を持つ IAM ロールの ARN。想定ロールベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。
-
aws.glue.region
- 必須: はい
- 説明: AWS Glue Data Catalog が存在するリージョン。例:
us-west-1
。
-
aws.glue.access_key
- 必須: いいえ
- 説明: AWS IAM ユーザーのアクセスキー。IAM ユーザーベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。
-
aws.glue.secret_key
- 必須: いいえ
- 説明: AWS IAM ユーザーのシークレットキー。IAM ユーザーベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。
AWS Glue へのアクセス認証方法の選択方法および AWS IAM コンソールでのアクセス制御ポリシーの設定方法については、AWS Glue へのアクセス認証パラメータを参照してください。
REST
S3テーブル用のIceberg RESTカタログの作成方法の詳細については、AWS S3テーブル用のIceberg REST Catalog を参照してください。
メタストアとして REST を使用する場合、メタストアのタイプを REST ("iceberg.catalog.type" = "rest"
) として指定する必要があります。MetastoreParams
を次のように設定します。
"iceberg.catalog.type" = "rest",
"iceberg.catalog.uri" = "<rest_server_api_endpoint>",
"iceberg.catalog.security" = "oauth2",
"iceberg.catalog.oauth2.credential" = "<credential>",
"iceberg.catalog.warehouse" = "<identifier_or_path_to_warehouse>"
REST catalog 用の MetastoreParams
:
-
iceberg.catalog.type
- 必須: はい
- 説明: Iceberg クラスターで使用するメタストアのタイプ。値を
rest
に設定します。
-
iceberg.catalog.uri
- 必須: はい
- 説明: REST サービスエンドポイントの URI。例:
https://api.tabular.io/ws
。
-
iceberg.catalog.view-endpoints-supported
- 必須: いいえ
- 説明: 以前のバージョンの REST サービスが
CatalogConfig
でエンドポイントを返さない場合に、ビュー関連の操作をサポートするためにビューエンドポイントを使用するかどうか。このパラメータは初期のバージョンの REST サーバとの下位互換性のために使用される。デフォルト:false
。
-
iceberg.catalog.security
- 必須: いいえ
- 説明: 使用する認証プロトコルのタイプ。デフォルト:
NONE
。有効な値:OAUTH2
。OAUTH2
認証プロトコルにはtoken
またはcredential
が必要です。
-
iceberg.catalog.oauth2.token
- 必須: いいえ
- 説明: サーバーとのやり取りに使用されるベアラートークン。
OAUTH2
認証プロトコルにはtoken
またはcredential
が必要です。例:AbCdEf123456
。
-
iceberg.catalog.oauth2.credential
- 必須: いいえ
- 説明: サーバーとの OAuth2 クライアント資格情報フローでトークンと交換するための資格情報。
OAUTH2
認証プロトコルにはtoken
またはcredential
が必要です。例:AbCdEf123456
。
-
iceberg.catalog.oauth2.scope
- 必須: いいえ
- 説明: REST Catalog と通信する際に使用するスコープ。
credential
を使用する場合にのみ適用されます。
-
iceberg.catalog.oauth2.server-uri
- 必須: いいえ
- 説明: OAuth2 サーバーからアクセストークンを取得するためのエンドポイント。
-
iceberg.catalog.vended-credentials-enabled
- 必須: いいえ
- 説明: ファイルシステムアクセスのために REST バックエンドによって提供される資格情報を使用するかどうか。デフォルト:
true
。
-
iceberg.catalog.warehouse
- 必須: いいえ
- 説明: Iceberg catalog のウェアハウスの場所または識別子。例:
s3://my_bucket/warehouse_location
またはsandbox
。
-
iceberg.catalog.rest.nested-namespace-enabled
- 必須: いいえ
- 説明: 入れ子になった Namespace の下にあるオブジェクトのクエリをサポートするかどうか。デフォルト:
false
。
次の例は、メタストアとして Tabular を使用する Iceberg catalog tabular
を作成します。
CREATE EXTERNAL CATALOG tabular
PROPERTIES
(
"type" = "iceberg",
"iceberg.catalog.type" = "rest",
"iceberg.catalog.uri" = "https://api.tabular.io/ws",
"iceberg.catalog.oauth2.credential" = "t-5Ii8e3FIbT9m0:aaaa-3bbbbbbbbbbbbbbbbbbb",
"iceberg.catalog.warehouse" = "sandbox"
);
次の例は、メタストアとして Polaris を使用する Iceberg catalog smith_polaris
を作成します。
CREATE EXTERNAL CATALOG smith_polaris
PROPERTIES (
"iceberg.catalog.uri" = "http://xxx.xx.xx.xxx:8181/api/catalog",
"type" = "iceberg",
"iceberg.catalog.type" = "rest",
"iceberg.catalog.warehouse" = "starrocks_catalog",
"iceberg.catalog.security" = "oauth2",
"iceberg.catalog.oauth2.credential" = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"iceberg.catalog.oauth2.scope"='PRINCIPAL_ROLE:ALL'
);
# `ns1.ns2.tpch_namespace` はネストされた名前空間です
create table smith_polaris.`ns1.ns2.tpch_namespace`.tbl (c1 string);
mysql> select * from smith_polaris.`ns1.ns2.tpch_namespace`.tbl;
+------+
| c1 |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.34 sec)
StorageCredentialParams
StarRocks がストレージシステムとどのように統合するかに関する一連のパラメータ。このパラメータセットはオプションです。
次の点に注意してください。
-
ストレージとして HDFS を使用する場合、
StorageCredentialParams
を設定する必要はなく、このセクションをスキップできます。AWS S3、その他の S3 互換ストレージシステム、Microsoft Azure Storage、または Google GCS をストレージとして使用する場合、StorageCredentialParams
を設定する必要があります。 -
メタストアとして Tabular を使用する場合、
StorageCredentialParams
を設定する必要はなく、このセクションをスキップできます。メタストアとして HMS または AWS Glue を使用する場合、StorageCredentialParams
を設定する必要があります。
ストレージタイプに合ったタブを選択してください。
- AWS S3
- HDFS
- MinIO
- Microsoft Azure Blob Storage
- Google GCS
AWS S3
Iceberg クラスターのストレージとして AWS S3 を選択した場合、次のいずれかの操作を行います。
-
インスタンスプロファイルベースの認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "<aws_s3_region>" -
想定ロールベースの認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<iam_role_arn>",
"aws.s3.region" = "<aws_s3_region>" -
IAM ユーザーベースの認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"aws.s3.use_instance_profile" = "false",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>",
"aws.s3.region" = "<aws_s3_region>"
AWS S3 用の StorageCredentialParams
:
aws.s3.use_instance_profile
必須: はい
説明: インスタンスプロファイルベースの認証方法と想定ロールベースの認証方法を有効にするかどうかを指定します。 有効な値: true
および false
。デフォルト値: false
。
aws.s3.iam_role_arn
必須: いいえ 説明: AWS S3 バケットに対する権限を持つ IAM ロールの ARN。想定ロールベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。
aws.s3.region
必須: はい
説明: AWS S3 バケットが存在するリージョン。例: us-west-1
。
aws.s3.access_key
必須: いいえ 説明: IAM ユーザーのアクセスキー。IAM ユーザーベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。
aws.s3.secret_key
必須: いいえ 説明: IAM ユーザーのシークレットキー。IAM ユーザーベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。
AWS S3 へのアクセス認証方法の選択方法および AWS IAM コンソールでのアクセス制御ポリシーの設定方法については、AWS S3 へのアクセス認証パラメータを参照してください。
HDFS ストレージを使用する場合、ストレージ資格情報をスキップします。
S3 互換ストレージシステム
Iceberg catalog は v2.5 以降で S3 互換ストレージシステムをサポートしています。
S3 互換ストレージシステム(例: MinIO)を Iceberg クラスターのストレージとして選択した場合、StorageCredentialParams
を次のように設定して、統合を成功させます。
"aws.s3.enable_ssl" = "false",
"aws.s3.enable_path_style_access" = "true",
"aws.s3.endpoint" = "<s3_endpoint>",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>"
MinIO およびその他の S3 互換システム用の StorageCredentialParams
:
aws.s3.enable_ssl
必須: はい
説明: SSL 接続を有効にするかどうかを指定します。
有効な値: true
および false
。デフォルト値: true
。
aws.s3.enable_path_style_access
必須: はい
説明: パススタイルアクセスを有効にするかどうかを指定します。
有効な値: true
および false
。デフォルト値: false
。MinIO の場合、値を true
に設定する必要があります。
パススタイルの URL は次の形式を使用します: https://s3.<region_code>.amazonaws.com/<bucket_name>/<key_name>
。例: US West (Oregon) リージョンに DOC-EXAMPLE-BUCKET1
というバケットを作成し、そのバケット内の alice.jpg
オブジェクトにアクセスする場合、次のパススタイルの URL を使用できます: https://s3.us-west-2.amazonaws.com/DOC-EXAMPLE-BUCKET1/alice.jpg
。
aws.s3.endpoint
必須: はい 説明: AWS S3 の代わりに S3 互 換ストレージシステムに接続するために使用されるエンドポイント。
aws.s3.access_key
必須: はい 説明: IAM ユーザーのアクセスキー。
aws.s3.secret_key
必須: はい 説明: IAM ユーザーのシークレットキー。
Microsoft Azure Storage
Iceberg catalog は v3.0 以降で Microsoft Azure Storage をサポートしています。
Azure Blob Storage
Iceberg クラスターのストレージとして Blob Storage を選択した場合、次のいずれかの操作を行います。
-
共有キー認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>" -
SAS トークン認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.container" = "<container_name>",
"azure.blob.sas_token" = "<storage_account_SAS_token>"
Microsoft Azure 用の StorageCredentialParams
:
azure.blob.storage_account
必須: はい 説明: Blob Storage アカウントのユーザー名。
azure.blob.shared_key
必須: はい 説明: Blob Storage アカウントの共有キー。
azure.blob.account_name
必須: はい 説明: Blob Storage アカウントのユーザー名。
azure.blob.container
必須: はい 説明: データを保存する Blob コンテナの名前。
azure.blob.sas_token
必須: はい 説明: Blob Storage アカウントにアクセスするために使用される SAS トークン。
Azure Data Lake Storage Gen1
Iceberg クラスターのストレージとして Data Lake Storage Gen1 を選択した場合、次のいずれかの操作を行います。
-
マネージドサービスアイデンティティ認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.adls1.use_managed_service_identity" = "true"
または:
-
サービスプリンシパル認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.adls1.oauth2_client_id" = "<application_client_id>",
"azure.adls1.oauth2_credential" = "<application_client_credential>",
"azure.adls1.oauth2_endpoint" = "<OAuth_2.0_authorization_endpoint_v2>"
Azure Data Lake Storage Gen2
Iceberg クラスターのストレージとして Data Lake Storage Gen2 を選択した場合、次のいずれかの操作を行います。
-
マネージドアイデンティティ認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.adls2.oauth2_use_managed_identity" = "true",
"azure.adls2.oauth2_tenant_id" = "<service_principal_tenant_id>",
"azure.adls2.oauth2_client_id" = "<service_client_id>"または:
-
共有キー認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.adls2.storage_account" = "<storage_account_name>",
"azure.adls2.shared_key" = "<storage_account_shared_key>"または:
-
サービスプリンシパル認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"azure.adls2.oauth2_client_id" = "<service_client_id>",
"azure.adls2.oauth2_client_secret" = "<service_principal_client_secret>",
"azure.adls2.oauth2_client_endpoint" = "<service_principal_client_endpoint>"
Google GCS
Iceberg catalog は v3.0 以降で Google GCS をサポートしています。
Iceberg クラスターのストレージとして Google GCS を選択した場合、次のいずれかの操作を行います。
-
VM ベースの認証方法を選択する場合、
StorageCredentialParams
を次のように設定します。"gcp.gcs.use_compute_engine_service_account" = "true"
-
サービスアカウントベースの認証方法を選択する場合、
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
を次のように設定します。-
VM インスタンスをサービスアカウントにインパーソネートさせる場合:
"gcp.gcs.use_compute_engine_service_account" = "true",
"gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>" -
サービスアカウント(仮にメタサービスアカウントと呼ぶ)を別のサービスアカウント(仮にデータサービスアカウントと呼ぶ)にインパーソネートさせる場合:
"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>"
-
Google GCS 用の 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"
説明: インパーソネートしたいサービスアカウント。
MetadataRelatedParams
StarRocks における Iceberg メタデータのキャッシュに関するパラメーターのセットです。このパラメーターセットはオプションです。
v3.3.3 以降、StarRocks は 定期的なメタデータリフレッシュ戦略 をサポートしています。ほとんどの場合、以下のパラメーターを無視し、そのポリシーパラメーターを調整する必要はありません。これらのパラメーターのデフォルト値は、すぐに使用できるパフォーマンスを提供します。システム変数 plan_mode
を使用して Iceberg メタデータパースモードを調整できます。
パラメータ | デフォルト | 説明 |
---|---|---|
enable_iceberg_metadata_cache | true | Table Cache、Partition Name Cache、および Manifest 内の Data File Cache と Delete Data File Cache を含む Iceberg 関連のメタデータをキャッシュするかどうか。 |
iceberg_manifest_cache_with_column_statistics | false | 列の統計情報をキャッシュするかどうか。 |
iceberg_manifest_cache_max_num | 100000 | キャッシュできる Manifest ファイルの最大数。 |
refresh_iceberg_manifest_min_length | 2 * 1024 * 1024 | Data File Cache の更新をトリガーする最小の Manifest ファイルの長さ。 |
v3.4 以降、StarRocks は、以下のパラメーターを設定することで、Iceberg メタデータを読み取ることで Iceberg テーブルの統計情 報を取得できます。これにより、Iceberg テーブルの統計情報の収集を積極的にトリガーする必要はありません。
パラメーター | デフォルト | 説明 |
---|---|---|
enable_get_stats_from_external_metadata | false | Iceberg メタデータから統計情報を取得するかどうか。この項目を true に設定すると、セッション変数 enable_get_stats_from_external_metadata を通じて、収集する統計情報の種類をさらに制御できます。 |
例
次の例は、使用するメタストアのタイプに応じて、Iceberg クラスターからデータをクエリするための Iceberg catalog iceberg_catalog_hms
または iceberg_catalog_glue
を作成します。ストレージタイプに合ったタブを選択してください。
- AWS S3
- HDFS
- MinIO
- Microsoft Azure Blob Storage
- Google GCS
AWS S3
インスタンスプロファイルベースの資格情報を選択した場合
-
Iceberg クラスターで Hive metastore を使用する場合、次のようなコマンドを実行します。
CREATE EXTERNAL CATALOG iceberg_catalog_hms
PROPERTIES
(
"type" = "iceberg",
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "us-west-2"
); -
Amazon EMR Iceberg クラスターで AWS Glue を使用する場合、次のようなコマンドを実行します。
CREATE EXTERNAL CATALOG iceberg_catalog_glue
PROPERTIES
(
"type" = "iceberg",
"iceberg.catalog.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.region" = "us-west-2",
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "us-west-2"
);
想定ロールベースの資格情報を選択した場合
-
Iceberg クラスターで Hive metastore を使用する場合、次のようなコマンドを実行します。
CREATE EXTERNAL CATALOG iceberg_catalog_hms
PROPERTIES
(
"type" = "iceberg",
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "arn:aws:iam::081976408565:role/test_s3_role",
"aws.s3.region" = "us-west-2"
); -
Amazon EMR Iceberg クラスターで AWS Glue を使用する場合、次のようなコマンドを実行します。
CREATE EXTERNAL CATALOG iceberg_catalog_glue
PROPERTIES
(
"type" = "iceberg",
"iceberg.catalog.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.iam_role_arn" = "arn:aws:iam::081976408565:role/test_glue_role",
"aws.glue.region" = "us-west-2",
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "arn:aws:iam::081976408565:role/test_s3_role",
"aws.s3.region" = "us-west-2"
);