Hudi catalog
Hudi catalog は、Apache Hudi からデータを取り込まずにクエリを実行できる external catalog です。Hudi クラスターで SQL ワークロードを成功させるためには、CelerData クラスターが Hudi クラスターのストレージシステムとメタストアにアクセスできる必要があります。CelerData は以下のストレージシステムとメタストアをサポートしています。
-
AWS S3 のようなオブジェクトストレージ
-
Hive metastore (HMS) や AWS Glue のようなメタストア
NOTE
ストレージとして AWS S3 を選択した場合、メタストアとして HMS または AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとしては HMS のみ使用できます。
使用上の注意
- CelerData がサポ ートする Hudi のファイル形式は Parquet です。Parquet ファイルは以下の圧縮形式をサポートしています: SNAPPY, LZ4, ZSTD, GZIP, NO_COMPRESSION。
- CelerData は Hudi の Copy On Write (COW) テーブルと Merge On Read (MOR) テーブルを完全にサポートしています。
準備
Hudi catalog を作成する前に、CelerData クラスターが Hudi クラスターのストレージシステムとメタストアと統合できることを確認してください。
Hive metastore
Hudi クラスターがメタストアとして Hive metastore を使用している場合、CelerData が Hive metastore のホストにアクセスできることを確認してください。
NOTE
通常、CelerData クラスターと Hive metastore の統合を有効にするために、以下のいずれかのアクションを取ることができます。
- CelerData クラスターと Hive metastore を同じ VPC にデプロイする。
- CelerData クラスターの VPC と Hive metastore の VPC の間に VPC ピアリング接続を構成する。
次に、Hive metastore のセキュリティグループの設定を確認し、CelerData クラスターのセキュリティグループからのインバウンドトラフィックを許可するインバウンドルールが設定されていること、およびデフォルトポート 9083 がカバーされていることを確認してください。
AWS
Hudi クラスターがストレージとして AWS S3 を使用している場合、またはメタストアとして AWS Glue を使用している場合、適切な認証方法を選択し、IAM ロールやユーザーの作成、指定された IAM ロールやユーザーへの IAM ポリシーの追加など、必要な準備を行ってください。詳細については、Authenticate to AWS resources > Preparations を参照してください。
Microsoft Azure Storage
Hudi クラスターがストレージとして Azure を使用している場合、適切な認証方法を選択し、ロールの割り当てを追加するなどの必要な準備を行ってください。詳細については、Authenticate to Azure cloud storage を参照してください。
Hudi catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "hudi",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)
パラメータ
catalog_name
Hudi catalog の名前です。命名規則は以下の通りです。
- 名前には文字、数字 (0-9)、アンダースコア (_) を含めることができます。文字で始まる必要があります。
- 名前は大文字と小文字を区別し、長さは 1023 文字を超えることはできません。
comment
Hudi catalog の説 明です。このパラメータはオプションです。
type
データソースのタイプです。値を hudi
に設定します。
MetastoreParams
CelerData がデータソースのメタストアと統合する方法に関するパラメータのセットです。
Hive metastore
データソースのメタストアとして Hive metastore を選択した場合、MetastoreParams
を以下のように設定します。
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "<hive_metastore_uri>"
以下の表は、MetastoreParams
に設定する必要があるパラメータを説明しています。
Parameter | Required | Description |
---|---|---|
hive.metastore.type | Yes | Hudi クラスターで使用するメタストアのタイプです。値を hive に設定します。 |
hive.metastore.uris | Yes | 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
を以下のように設定します。"hive.metastore.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.region" = "<aws_glue_region>" -
アサインされたロールベースの認証方法を選択する場合、
MetastoreParams
を以下のように設定します。"hive.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
を以下のように設定します。"hive.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
に設定する必要があるパラメータを説明しています。
Parameter | Required | Description |
---|---|---|
hive.metastore.type | Yes | Hudi クラスターで使用するメタストアのタイプです。値を glue に設定します。 |
aws.glue.use_instance_profile | Yes | インスタンスプロファイルベースの認証方法とアサインされたロールベースの認証を有効にするかどうかを指定します。有効な値: true と false 。デフォルト値: false 。 |
aws.glue.iam_role_arn | No | AWS Glue Data Catalog に対する権限を持つ IAM ロールの ARN です。アサインされたロールベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。 |
aws.glue.region | Yes | AWS Glue Data Catalog が存在するリージョンです。例: us-west-1 。 |
aws.glue.access_key | No | AWS IAM ユーザーのアクセスキーです。IAM ユーザーベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。 |
aws.glue.secret_key | No | AWS IAM ユーザーのシークレットキーです。IAM ユーザーベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。 |
AWS Glue にアクセスするための認証方法の選択方法や AWS IAM コンソールでのアクセス制御ポリシーの設定方法については、Authentication parameters for accessing AWS Glue を参照してください。
StorageCredentialParams
CelerData クラスターがオブジェクトストレージと統合する方法に関するパラメータのセットです。
AWS S3
Hudi クラスターのストレージとして 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
に設定する必要があるパラメータを説明しています。
Parameter | Required | Description |
---|---|---|
aws.s3.use_instance_profile | Yes | インスタンスプロファイルベースの認証方法とアサインされたロールベースの認証方法を有効にするかどうかを指定します。有効な値: true と false 。デフォルト値: false 。 |
aws.s3.iam_role_arn | No | AWS S3 バケットに対する権限を持つ IAM ロールの ARN です。アサインされたロールベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。 |
aws.s3.region | Yes | AWS S3 バケットが存在するリージョンです。例: us-west-1 。 |
aws.s3.access_key | No | IAM ユーザーのアクセスキ ーです。IAM ユーザーベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。 |
aws.s3.secret_key | No | IAM ユーザーのシークレットキーです。IAM ユーザーベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。 |
AWS S3 にアクセスするための認証方法の選択方法や AWS IAM コンソールでのアクセス制御ポリシーの設定方法については、Authentication parameters for accessing AWS S3 を参照してください。
Microsoft Azure Storage
このセクションでは、さまざまな Azure クラウドストレージサービスとさまざまな認証方法を使用して統合するために StorageCredentialParams
に設定する必要があるパラメータについて説明します。これらのパラメータの値を取得する方法については、Authenticate to Azure cloud storage を参照してください。
Azure Blob Storage
Hudi クラスターのストレージとして Blob Storage を選択した場合、以下のいずれかのアクションを取ります。
-
共有キー認証方法を使用する場合 、
StorageCredentialParams
を以下のように設定します。"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>"以下の表は、パラメータを説明しています。
Parameter Description azure.blob.storage_account Blob ストレージアカウントの名前です。 azure.blob.shared_key Blob ストレージアカウントの共有キー (アクセスキー) です。 NOTICE
認証に使用するストレージアカウントは、Hudi クラスターのデータを保存するために使用されるものである必要があります。
-
SAS トークン認証方法を使用する場合、
StorageCredentialParams
を以下のように設定します。"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.container" = "<container_name>",
"azure.blob.sas_token" = "<storage_account_SAS_token>"以下の表は、パラメータを説明しています。
Parameter Description azure.blob.storage_account Blob ストレージアカウントの名前です。 azure.blob.container Blob ストレージアカウント内でデータを保存する Blob コンテナの名前です。 azure.blob.sas_token Blob ストレージアカウントにアクセスするために使用される SAS トークンです。 NOTICE
認証に使用するストレージアカウントは、Hudi クラスターのデータを保存するために使用されるものである必要があります。