メインコンテンツまでスキップ
バージョン: Stable-3.3

統合カタログ

統合カタログは、StarRocks が v3.2 以降で提供する外部カタログの一種で、Apache Hive™、Apache Iceberg、Apache Hudi、Delta Lake、Apache Kudu のデータソースを取り込みなしで統合データソースとして扱います。統合カタログを使用すると、以下のことが可能です:

  • Hive、Iceberg、Hudi、Delta Lake、Paimon、Kudu に保存されたデータを、手動でテーブルを作成することなく直接クエリできます。
  • INSERT INTO または非同期マテリアライズドビュー(v2.5 以降でサポート)を使用して、Hive、Iceberg、Hudi、Delta Lake、Paimon、Kudu に保存されたデータを処理し、そのデータを StarRocks にロードできます。
  • StarRocks 上で操作を行い、Hive および Iceberg のデータベースやテーブルを作成または削除できます。

統合データソースでの SQL ワークロードを成功させるためには、StarRocks クラスターが統合データソースのストレージシステムおよびメタストアにアクセスできる必要があります。StarRocks は以下のストレージシステムおよびメタストアをサポートしています:

  • 分散ファイルシステム(HDFS)または AWS S3、Microsoft Azure Storage、Google GCS、その他の S3 互換ストレージシステム(例:MinIO)

  • メタストアとして Hive メタストアまたは AWS Glue

    注意

    ストレージとして AWS S3 を選択した場合、メタストアとして HMS または AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとしては HMS のみを使用できます。

制限事項

1 つの統合カタログは、単一のストレージシステムおよび単一のメタストアサービスとのみ統合できます。したがって、StarRocks と統合したいすべてのデータソースが同じストレージシステムおよびメタストアサービスを使用していることを確認してください。

使用上の注意

  • サポートされているファイル形式とデータ型を理解するために、Hive catalogIceberg catalogHudi catalogDelta Lake catalogPaimon catalogKudu catalog の「使用上の注意」セクションを参照してください。

  • 特定のテーブル形式に対してのみフォーマット固有の操作がサポートされています。例えば、CREATE TABLEDROP TABLE は Hive と Iceberg のみでサポートされており、REFRESH EXTERNAL TABLE は Hive と Hudi のみでサポートされています。

    統合カタログ内で CREATE TABLE ステートメントを使用してテーブルを作成する場合、ENGINE パラメータを使用してテーブル形式(Hive または Iceberg)を指定してください。

統合準備

統合カタログを作成する前に、StarRocks クラスターが統合データソースのストレージシステムおよびメタストアと統合できることを確認してください。

AWS IAM

ストレージとして AWS S3 を使用する場合、またはメタストアとして AWS Glue を使用する場合、適切な認証方法を選択し、StarRocks クラスターが関連する AWS クラウドリソースにアクセスできるように必要な準備を行ってください。詳細については、AWS リソースへの認証 - 準備 を参照してください。

HDFS

ストレージとして HDFS を選択した場合、StarRocks クラスターを次のように構成してください:

  • (オプション)HDFS クラスターおよび Hive メタストアにアクセスするためのユーザー名を設定します。デフォルトでは、StarRocks は HDFS クラスターおよび Hive メタストアにアクセスするために FE および BE または CN プロセスのユーザー名を使用します。また、各 FE の fe/conf/hadoop_env.sh ファイルの先頭および各 BE または CN の be/conf/hadoop_env.sh ファイルの先頭に export HADOOP_USER_NAME="<user_name>" を追加してユーザー名を設定することもできます。これらのファイルでユーザー名を設定した後、各 FE および各 BE または CN を再起動してパラメータ設定を有効にしてください。StarRocks クラスターごとに 1 つのユーザー名のみを設定できます。
  • データをクエリする際、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 コマンドを実行して、Key Distribution Center (KDC) から Ticket Granting Ticket (TGT) を取得します。このコマンドを実行するには、HDFS クラスターおよび Hive メタストアにアクセスする権限が必要です。このコマンドを使用して KDC にアクセスすることは時間に敏感です。したがって、このコマンドを定期的に実行するために cron を使用する必要があります。
  • 各 FE の $FE_HOME/conf/fe.conf ファイルおよび各 BE または CN の $BE_HOME/conf/be.conf ファイルに JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf" を追加します。この例では、/etc/krb5.conf は krb5.conf ファイルの保存パスです。必要に応じてパスを変更できます。

統合カタログの作成

構文

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "unified",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams,
PaimonCatalogParams,
KuduCatalogParams
)

パラメータ

catalog_name

統合カタログの名前。命名規則は以下の通りです:

  • 名前には文字、数字 (0-9)、アンダースコア (_) を含めることができます。文字で始まる必要があります。
  • 名前は大文字と小文字を区別し、長さは 1023 文字を超えてはなりません。

comment

統合カタログの説明。このパラメータはオプションです。

type

データソースのタイプ。値を unified に設定します。

MetastoreParams

StarRocks がメタストアと統合する方法に関する一連のパラメータ。

Hive メタストア

統合データソースのメタストアとして Hive メタストアを選択した場合、MetastoreParams を次のように構成します:

"unified.metastore.type" = "hive",
"hive.metastore.uris" = "<hive_metastore_uri>"

注意

データをクエリする前に、Hive メタストアノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。そうしないと、クエリを開始する際に StarRocks が Hive メタストアにアクセスできない可能性があります。

次の表は、MetastoreParams で構成する必要があるパラメータを説明しています。

パラメータ必須説明
unified.metastore.typeはい統合データソースに使用するメタストアのタイプ。値を hive に設定します。
hive.metastore.urisはいHive メタストアの URI。形式:thrift://<metastore_IP_address>:<metastore_port>。高可用性 (HA) が Hive メタストアに有効になっている場合、複数のメタストア 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 を次のように構成します:

    "unified.metastore.type" = "glue",
    "aws.glue.use_instance_profile" = "true",
    "aws.glue.region" = "<aws_glue_region>"
  • アサムドロールベースの認証方法を選択する場合、MetastoreParams を次のように構成します:

    "unified.metastore.type" = "glue",
    "aws.glue.use_instance_profile" = "true",
    "aws.glue.iam_role_arn" = "<iam_role_arn>",
    "aws.glue.region" = "<aws_glue_region>"
  • IAM ユーザーベースの認証方法を選択する場合、MetastoreParams を次のように構成します:

    "unified.metastore.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>"

次の表は、MetastoreParams で構成する必要があるパラメータを説明しています。

パラメータ必須説明
unified.metastore.typeはい統合データソースに使用するメタストアのタイプ。値を 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 ユーザーのアクセスキー。AWS Glue にアクセスするために IAM ユーザーベースの認証方法を使用する場合、このパラメータを指定する必要があります。
aws.glue.secret_keyいいえAWS IAM ユーザーのシークレットキー。AWS Glue にアクセスするために IAM ユーザーベースの認証方法を使用する場合、このパラメータを指定する必要があります。

AWS Glue へのアクセスのための認証方法の選択方法および AWS IAM コンソールでのアクセス制御ポリシーの構成方法については、AWS Glue へのアクセスのための認証パラメータ を参照してください。

StorageCredentialParams

StarRocks がストレージシステムと統合する方法に関する一連のパラメータ。このパラメータセットはオプションです。

ストレージとして HDFS を使用する場合、StorageCredentialParams を構成する必要はありません。

ストレージとして AWS S3、他の S3 互換ストレージシステム、Microsoft Azure Storage、または Google GCS を使用する場合、StorageCredentialParams を構成する必要があります。

AWS S3

ストレージとして 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>"

次の表は、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 へのアクセスのための認証パラメータ を参照してください。

S3 互換ストレージシステム

S3 互換ストレージシステム(例:MinIO)を選択する場合、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>"

次の表は、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
Azure Blob Storage

Blob Storage をストレージとして選択する場合、以下のいずれかの方法を取ります:

  • 共有キー認証方法を選択する場合、StorageCredentialParams を次のように構成します:

    "azure.blob.storage_account" = "<storage_account_name>",
    "azure.blob.shared_key" = "<storage_account_shared_key>"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータ必須説明
    azure.blob.storage_accountはいBlob Storage アカウントのユーザー名。
    azure.blob.shared_keyはいBlob Storage アカウントの共有キー。
  • SAS トークン認証方法を選択する場合、StorageCredentialParams を次のように構成します:

    "azure.blob.storage_account" = "<storage_account_name>",
    "azure.blob.container" = "<container_name>",
    "azure.blob.sas_token" = "<storage_account_SAS_token>"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータ必須説明
    azure.blob.storage_accountはいBlob Storage アカウントのユーザー名。
    azure.blob.containerはいデータを格納する blob コンテナの名前。
    azure.blob.sas_tokenはいBlob Storage アカウントにアクセスするために使用される SAS トークン。
Azure Data Lake Storage Gen2

Data Lake Storage Gen2 をストレージとして選択する場合、以下のいずれかの方法を取ります:

  • マネージド ID 認証方法を選択する場合、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.oauth2_use_managed_identityはいマネージド ID 認証方法を有効にするかどうかを指定します。値を true に設定します。
    azure.adls2.oauth2_tenant_idはいアクセスしたいデータのテナント ID。
    azure.adls2.oauth2_client_idはいマネージド ID のクライアント(アプリケーション)ID。
  • 共有キー認証方法を選択する場合、StorageCredentialParams を次のように構成します:

    "azure.adls2.storage_account" = "<storage_account_name>",
    "azure.adls2.shared_key" = "<storage_account_shared_key>"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータ必須説明
    azure.adls2.storage_accountはいData Lake Storage Gen2 ストレージアカウントのユーザー名。
    azure.adls2.shared_keyはいData Lake Storage Gen2 ストレージアカウントの共有キー。
  • サービスプリンシパル認証方法を選択する場合、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>"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータ必須説明
    azure.adls2.oauth2_client_idはいサービスプリンシパルのクライアント(アプリケーション)ID。
    azure.adls2.oauth2_client_secretはい作成された新しいクライアント(アプリケーション)シークレットの値。
    azure.adls2.oauth2_client_endpointはいサービスプリンシパルまたはアプリケーションの OAuth 2.0 トークンエンドポイント(v1)。
Azure Data Lake Storage Gen1

Data Lake Storage Gen1 をストレージとして選択する場合、以下のいずれかの方法を取ります:

  • マネージドサービス ID 認証方法を選択する場合、StorageCredentialParams を次のように構成します:

    "azure.adls1.use_managed_service_identity" = "true"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータ必須説明
    azure.adls1.use_managed_service_identityはいマネージドサービス ID 認証方法を有効にするかどうかを指定します。値を 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>"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータ必須説明
    azure.adls1.oauth2_client_idはいサービスプリンシパルのクライアント(アプリケーション)ID。
    azure.adls1.oauth2_credentialはい作成された新しいクライアント(アプリケーション)シークレットの値。
    azure.adls1.oauth2_endpointはいサービスプリンシパルまたはアプリケーションの OAuth 2.0 トークンエンドポイント(v1)。
Google GCS

Google GCS をストレージとして選択する場合、以下のいずれかの方法を取ります:

  • VM ベースの認証方法を選択する場合、StorageCredentialParams を次のように構成します:

    "gcp.gcs.use_compute_engine_service_account" = "true"

    次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。

    パラメータデフォルト値値の例説明
    gcp.gcs.use_compute_engine_service_accountfalsetrueCompute Engine にバインドされたサービスアカウントを直接使用するかどうかを指定します。
  • サービスアカウントベースの認証方法を選択する場合、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 ファイルのプライベートキー。
  • インパーソネーションベースの認証方法を選択する場合、StorageCredentialParams を次のように構成します:

    • VM インスタンスにサービスアカウントをインパーソネートさせる場合:

      "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_accountfalsetrueCompute Engine にバインドされたサービスアカウントを直接使用するかどうかを指定します。
      gcp.gcs.impersonation_service_account"""hello"インパーソネートしたいサービスアカウント。
    • サービスアカウント(仮にメタサービスアカウントと呼ぶ)が別のサービスアカウント(仮にデータサービスアカウントと呼ぶ)をインパーソネートする場合:

      "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"インパーソネートしたいデータサービスアカウント。

MetadataUpdateParams

StarRocks が Hive、Hudi、Delta Lake のキャッシュされたメタデータを更新する方法に関する一連のパラメータ。このパラメータセットはオプションです。Hive、Hudi、Delta Lake からキャッシュされたメタデータを更新するためのポリシーについての詳細は、Hive catalogHudi catalogDelta Lake catalog を参照してください。

ほとんどの場合、MetadataUpdateParams を無視し、その中のポリシーパラメータを調整する必要はありません。これらのパラメータのデフォルト値は、すぐに使えるパフォーマンスを提供します。

ただし、Hive、Hudi、Delta Lake のデータ更新頻度が高い場合、これらのパラメータを調整して自動非同期更新のパフォーマンスをさらに最適化することができます。

パラメータ必須説明
enable_metastore_cacheいいえStarRocks が Hive、Hudi、Delta Lake テーブルのメタデータをキャッシュするかどうかを指定します。
有効な値:true および false。デフォルト値:true。値 true はキャッシュを有効にし、値 false はキャッシュを無効にします。
enable_remote_file_cacheいいえStarRocks が Hive、Hudi、Delta Lake テーブルまたはパーティションの基礎データファイルのメタデータをキャッシュするかどうかを指定します。
有効な値:true および false。デフォルト値:true。値 true はキャッシュを有効にし、値 false はキャッシュを無効にします。
metastore_cache_refresh_interval_secいいえStarRocks が自身にキャッシュされた Hive、Hudi、Delta Lake テーブルまたはパーティションのメタデータを非同期に更新する時間間隔。単位:秒。デフォルト値:7200(2 時間)。
remote_file_cache_refresh_interval_secいいえStarRocks が自身にキャッシュされた Hive、Hudi、Delta Lake テーブルまたはパーティションの基礎データファイルのメタデータを非同期に更新する時間間隔。単位:秒。デフォルト値:60
metastore_cache_ttl_secいいえStarRocks が自身にキャッシュされた Hive、Hudi、Delta Lake テーブルまたはパーティションのメタデータを自動的に破棄する時間間隔。単位:秒。デフォルト値:86400(24 時間)。
remote_file_cache_ttl_secいいえStarRocks が自身にキャッシュされた Hive、Hudi、Delta Lake テーブルまたはパーティションの基礎データファイルのメタデータを自動的に破棄する時間間隔。単位:秒。デフォルト値:129600(36 時間)。

PaimonCatalogParams

Paimon Catalog に接続する方法に関する一連のパラメータ。このパラメータセットはオプションです。

パラメータ必須説明
paimon.catalog.warehouseいいえPaimon データのウェアハウスストレージパス。

KuduCatalogParams

Kudu Catalog に接続する方法に関する一連のパラメータ。このパラメータセットはオプションです。

パラメータ必須説明
kudu.masterいいえKudu マスターアドレスを指定します。デフォルトは localhost:7051 です。
kudu.schema-emulation.enabledいいえschema エミュレーションを有効または無効にするオプション。デフォルトではオフ(false)になっており、すべてのテーブルが default schema に属します。
kudu.schema-emulation.prefixいいえschema エミュレーションのプレフィックスは、kudu.schema-emulation.enabled = true の場合にのみ設定する必要があります。デフォルトのプレフィックスは空の文字列です:

以下の例では、使用するメタストアのタイプに応じて、unified_catalog_hms または unified_catalog_glue という名前の統合カタログを作成し、統合データソースからデータをクエリします。

HDFS

ストレージとして HDFS を使用する場合、以下のようなコマンドを実行します:

CREATE EXTERNAL CATALOG unified_catalog_hms
PROPERTIES
(
"type" = "unified",
"unified.metastore.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083"
);

AWS S3

インスタンスプロファイルベースの認証
  • Hive メタストアを使用する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.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 を使用した AWS Glue を使用する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_glue
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.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"
    );
アサムドロールベースの認証
  • Hive メタストアを使用する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.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 を使用した AWS Glue を使用する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_glue
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.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"
    );
IAM ユーザーベースの認証
  • Hive メタストアを使用する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "aws.s3.use_instance_profile" = "false",
    "aws.s3.access_key" = "<iam_user_access_key>",
    "aws.s3.secret_key" = "<iam_user_access_key>",
    "aws.s3.region" = "us-west-2"
    );
  • Amazon EMR を使用した AWS Glue を使用する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_glue
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.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" = "us-west-2",
    "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" = "us-west-2"
    );

S3 互換ストレージシステム

MinIO を例にとります。以下のようなコマンドを実行します:

CREATE EXTERNAL CATALOG unified_catalog_hms
PROPERTIES
(
"type" = "unified",
"unified.metastore.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
"aws.s3.enable_ssl" = "true",
"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>"
);

Microsoft Azure Storage

Azure Blob Storage
  • 共有キー認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "azure.blob.storage_account" = "<blob_storage_account_name>",
    "azure.blob.shared_key" = "<blob_storage_account_shared_key>"
    );
  • SAS トークン認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "azure.blob.storage_account" = "<blob_storage_account_name>",
    "azure.blob.container" = "<blob_container_name>",
    "azure.blob.sas_token" = "<blob_storage_account_SAS_token>"
    );
Azure Data Lake Storage Gen1
  • マネージドサービス ID 認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "azure.adls1.use_managed_service_identity" = "true"
    );
  • サービスプリンシパル認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "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
  • マネージド ID 認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "azure.adls2.oauth2_use_managed_identity" = "true",
    "azure.adls2.oauth2_tenant_id" = "<service_principal_tenant_id>",
    "azure.adls2.oauth2_client_id" = "<service_client_id>"
    );
  • 共有キー認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "azure.adls2.storage_account" = "<storage_account_name>",
    "azure.adls2.shared_key" = "<shared_key>"
    );
  • サービスプリンシパル認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "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

  • VM ベースの認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "gcp.gcs.use_compute_engine_service_account" = "true"
    );
  • サービスアカウントベースの認証方法を選択する場合、以下のようなコマンドを実行します:

    CREATE EXTERNAL CATALOG unified_catalog_hms
    PROPERTIES
    (
    "type" = "unified",
    "unified.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "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>"
    );
  • インパーソネーションベースの認証方法を選択する場合:

    • VM インスタンスにサービスアカウントをインパーソネートさせる場合、以下のようなコマンドを実行します:

      CREATE EXTERNAL CATALOG unified_catalog_hms
      PROPERTIES
      (
      "type" = "unified",
      "unified.metastore.type" = "hive",
      "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
      "gcp.gcs.use_compute_engine_service_account" = "true",
      "gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"
      );
    • サービスアカウントが別のサービスアカウントをインパーソネートする場合、以下のようなコマンドを実行します:

      CREATE EXTERNAL CATALOG unified_catalog_hms
      PROPERTIES
      (
      "type" = "unified",
      "unified.metastore.type" = "hive",
      "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
      "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>"
      );

統合カタログの表示

現在の StarRocks クラスター内のすべてのカタログをクエリするには、SHOW CATALOGS を使用できます:

SHOW CATALOGS;

外部カタログの作成ステートメントをクエリするには、SHOW CREATE CATALOG を使用できます。次の例では、unified_catalog_glue という名前の統合カタログの作成ステートメントをクエリします:

SHOW CREATE CATALOG unified_catalog_glue;

統合カタログおよびその中のデータベースへの切り替え

統合カタログおよびその中のデータベースに切り替えるには、次のいずれかの方法を使用できます:

  • 現在のセッションで指定された統合カタログに切り替えるには SET CATALOG を使用し、その後、アクティブなデータベースを指定するには USE を使用します:
  -- 現在のセッションで指定されたカタログに切り替える:
SET CATALOG <catalog_name>
-- 現在のセッションでアクティブなデータベースを指定する:
USE <db_name>
  • USE を直接使用して、統合カタログおよびその中のデータベースに切り替えます:

    USE <catalog_name>.<db_name>

統合カタログの削除

外部カタログを削除するには、DROP CATALOG を使用できます。

次の例では、unified_catalog_glue という名前の統合カタログを削除します:

DROP CATALOG unified_catalog_glue;

統合カタログからのテーブルのスキーマを表示

統合カタログからのテーブルのスキーマを表示するには、次のいずれかの構文を使用します:

  • スキーマを表示

    DESC[RIBE] <catalog_name>.<database_name>.<table_name>
  • CREATE ステートメントからスキーマと場所を表示

    SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>

統合カタログからデータをクエリ

統合カタログからデータをクエリするには、次の手順に従います:

  1. 統合カタログが関連付けられている統合データソース内のデータベースを表示するには、SHOW DATABASES を使用します:

    SHOW DATABASES FROM <catalog_name>
  2. Hive Catalog およびその中のデータベースに切り替えます。

  3. 指定されたデータベース内の宛先テーブルをクエリするには、SELECT を使用します:

    SELECT count(*) FROM <table_name> LIMIT 10

Hive、Iceberg、Hudi、Delta Lake、Kudu からデータをロード

Hive、Iceberg、Hudi、Delta Lake、Kudu テーブルのデータを統合カタログ内で作成された StarRocks テーブルにロードするには、INSERT INTO を使用できます。

次の例では、Hive テーブル hive_table のデータを統合カタログ unified_catalog に属するデータベース test_database に作成された StarRocks テーブル test_tbl にロードします:

INSERT INTO unified_catalog.test_database.test_table SELECT * FROM hive_table

統合カタログでデータベースを作成

StarRocks の内部カタログと同様に、統合カタログで CREATE DATABASE 権限を持っている場合、そのカタログで CREATE DATABASE ステートメントを使用してデータベースを作成できます。

注意

GRANT および REVOKE を使用して権限を付与および取り消すことができます。

StarRocks は、統合カタログで Hive および Iceberg データベースのみの作成をサポートしています。

統合カタログに切り替え、そのカタログでデータベースを作成するには、次のステートメントを使用します:

CREATE DATABASE <database_name>
[properties ("location" = "<prefix>://<path_to_database>/<database_name.db>")]

location パラメータは、データベースを作成したいファイルパスを指定します。これは HDFS またはクラウドストレージのいずれかにすることができます。

  • データソースのメタストアとして Hive メタストアを使用する場合、location パラメータはデフォルトで <warehouse_location>/<database_name.db> になります。データベース作成時にそのパラメータを指定しない場合、Hive メタストアでサポートされます。
  • データソースのメタストアとして AWS Glue を使用する場合、location パラメータにはデフォルト値がなく、したがってデータベース作成時にそのパラメータを指定する必要があります。

prefix は使用するストレージシステムに基づいて異なります:

ストレージシステムPrefix
HDFShdfs
Google GCSgs
Azure Blob Storage
  • ストレージアカウントが HTTP 経由でのアクセスを許可する場合、prefixwasb です。
  • ストレージアカウントが HTTPS 経由でのアクセスを許可する場合、prefixwasbs です。
Azure Data Lake Storage Gen1adl
Azure Data Lake Storage Gen2
  • ストレージアカウントが HTTP 経由でのアクセスを許可する場合、prefixabfs です。
  • ストレージアカウントが HTTPS 経由でのアクセスを許可する場合、prefixabfss です。
AWS S3 または他の S3 互換ストレージ(例:MinIO)s3

統合カタログからデータベースを削除

StarRocks の内部データベースと同様に、統合カタログ内で作成されたデータベースに対して DROP 権限を持っている場合、そのデータベースを削除するために DROP DATABASE ステートメントを使用できます。空のデータベースのみを削除できます。

注意

GRANT および REVOKE を使用して権限を付与および取り消すことができます。

StarRocks は、統合カタログから Hive および Iceberg データベースのみの削除をサポートしています。

統合カタログからデータベースを削除する際、HDFS クラスターまたはクラウドストレージ上のデータベースのファイルパスはデータベースと共に削除されません。

統合カタログに切り替え、そのカタログでデータベースを削除するには、次のステートメントを使用します:

DROP DATABASE <database_name>

統合カタログでテーブルを作成

StarRocks の内部データベースと同様に、統合カタログ内で作成されたデータベースに対して CREATE TABLE 権限を持っている場合、そのデータベースで CREATE TABLE または CREATE TABLE AS SELECT ステートメントを使用してテーブルを作成できます。

注意

GRANT および REVOKE を使用して権限を付与および取り消すことができます。

StarRocks は、統合カタログで Hive および Iceberg テーブルのみの作成をサポートしています。

Hive Catalog およびその中のデータベースに切り替え。その後、CREATE TABLE を使用して、そのデータベースに Hive または Iceberg テーブルを作成します:

CREATE TABLE <table_name>
(column_definition1[, column_definition2, ...]
ENGINE = {|hive|iceberg}
[partition_desc]

詳細については、Hive テーブルの作成 および Iceberg テーブルの作成 を参照してください。

次の例では、hive_table という名前の Hive テーブルを作成します。このテーブルは、actioniddt の 3 つの列で構成されており、そのうち iddt はパーティション列です。

CREATE TABLE hive_table
(
action varchar(65533),
id int,
dt date
)
ENGINE = hive
PARTITION BY (id,dt);

統合カタログのテーブルにデータをシンク

StarRocks の内部テーブルと同様に、統合カタログ内で作成されたテーブルに対して INSERT 権限を持っている場合、その Unified Catalog テーブルに StarRocks テーブルのデータをシンクするために INSERT ステートメントを使用できます(現在、Parquet 形式の Unified Catalog テーブルのみがサポートされています)。

注意

GRANT および REVOKE を使用して権限を付与および取り消すことができます。

StarRocks は、統合カタログで Hive および Iceberg テーブルへのデータシンクのみをサポートしています。

Hive Catalog およびその中のデータベースに切り替え。その後、INSERT INTO を使用して、そのデータベース内の Hive または Iceberg テーブルにデータを挿入します:

INSERT {INTO | OVERWRITE} <table_name>
[ (column_name [, ...]) ]
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }

-- 指定されたパーティションにデータをシンクしたい場合、次の構文を使用します:
INSERT {INTO | OVERWRITE} <table_name>
PARTITION (par_col1=<value> [, par_col2=<value>...])
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }

詳細については、Hive テーブルへのデータシンク および Iceberg テーブルへのデータシンク を参照してください。

次の例では、hive_table という名前の Hive テーブルに 3 行のデータを挿入します:

INSERT INTO hive_table
VALUES
("buy", 1, "2023-09-01"),
("sell", 2, "2023-09-02"),
("buy", 3, "2023-09-03");

統合カタログからテーブルを削除

StarRocks の内部テーブルと同様に、統合カタログ内で作成されたテーブルに対して DROP 権限を持っている場合、そのテーブルを削除するために DROP TABLE ステートメントを使用できます。

注意

GRANT および REVOKE を使用して権限を付与および取り消すことができます。

StarRocks は、統合カタログから Hive および Iceberg テーブルのみの削除をサポートしています。

Hive Catalog およびその中のデータベースに切り替え。その後、DROP TABLE を使用して、そのデータベース内の Hive または Iceberg テーブルを削除します:

DROP TABLE <table_name>

詳細については、Hive テーブルの削除 および Iceberg テーブルの削除 を参照してください。

次の例では、hive_table という名前の Hive テーブルを削除します:

DROP TABLE hive_table FORCE