Hive catalog
Hive catalog は、外部 catalog の一種であり、以下のことができます。
- Apache Hive™(以下、Hive)に保存されたデータを手動でテーブルを作成することなく直接クエリする。
- INSERT INTO や非同期マテリアライズドビューを使用して、Hive に保存されたデータを処理し、CelerData にデータをロードする。
- CelerData 上で操作を行い、Hive データベースやテーブルを作成または削除したり、CelerData テーブルから Parquet 形式の Hive テーブルにデータをシンクする(この機能は v3.2 以降でサポートされています)。
Hive クラスターで SQL ワークロードを成功させるためには、CelerData クラスターが Hive クラスターのストレージシステムとメタストアにアクセスできる必要があります。CelerData は以下のストレージシステムとメタストアをサポートしています。
-
AWS S3 や Microsoft Azure Storage などのオブジェクトスト レージ
-
Hive メタストア(HMS)や AWS Glue などのメタストア
注意
ストレージとして AWS S3 を選択した場合、メタストアとして HMS または AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとして HMS のみを使用できます。
使用上の注意
-
CelerData がサポートする Hive のファイル形式は Parquet、ORC、Textfile です。
- Parquet ファイルは、以下の圧縮形式をサポートしています:SNAPPY、LZO、LZ4、ZSTD、GZIP、NO_COMPRESSION。
- ORC ファイルは、以下の圧縮形式をサポートしています:ZLIB、SNAPPY、LZO、LZ4、ZSTD、NO_COMPRESSION。
- Textfile ファイルは、LZO 圧縮形式をサポートしています。
-
CelerData がサポートしていない Hive のデータ型は INTERVAL、BINARY です。また、CelerData は Textfile 形式の Hive テーブルに対して MAP および STRUCT データ型をサポートしていません。
-
Hive catalog は データのクエリ のみに使用できます。Hive catalog を使用して、Hive クラスターにデータを削除、削除、または挿入することはできません。
準備
Hive catalog を作成する前に、CelerData クラスターが Hive クラスターのストレージシステムとメタストアと統合できることを確認してください 。
Hive メタストア
Hive クラスターがメタストアとして Hive メタストアを使用している場合、CelerData が Hive メタストアのホストにアクセスできることを確認してください。
注意
通常、CelerData クラスターと Hive メタストアの統合を有効にするために、以下のいずれかのアクションを実行できます。
- CelerData クラスターと Hive メタストアを同じ VPC にデプロイする。
- CelerData クラスターの VPC と Hive メタストアの VPC の間に VPC ピアリング接続を構成する。
次に、Hive メタストアのセキュリティグループの設定を確認し、そのインバウンドルールが CelerData クラスターのセキュリティグループからのインバウンドトラフィックを許可し、そのポート範囲がデフォルトポート 9083 をカバーしていることを確認してください。
AWS
Hive クラスターがストレージとして AWS S3 を使用している場合、またはメタストアとして AWS Glue を使用している場合、適切な認証方法を選択し、IAM ロールやユーザーの作成、指定された IAM ロールやユーザーへの IAM ポリシーの追加など、必要な準備を行い、CelerData クラスターがこれらの AWS リソースにアクセスできるようにします。詳細については、AWS リソースへの認証 > 準備 を参照してください。
Microsoft Azure Storage
Hive クラスターがストレージとして Azure を使用している場合、適切な認証方法を選択し、ロールの割り当ての追加など、必要な準備を行います。詳細については、Azure クラウドストレージへの認証 を参照してください。
Hive catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "hive",
GeneralParams,
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)
パラメータ
catalog_name
Hive catalog の名前。命名規則は以下の通りです。
- 名前には文字、数字 (0-9)、アンダースコア (_) を含めることができます。名前は文字で始める必要があります。
- 名前は大文字と小文字を区別し、長さは 1023 文字を超えてはなりません。
comment
Hive catalog の説明。このパラメータはオプションです。
type
データソースのタイプ。値を hive
に設定します。
GeneralParams
一般的なパラメータのセット。
GeneralParams
で設定できるパラメータを以下の表に示します。
パラメータ | 必須 | 説明 |
---|---|---|
enable_recursive_listing | いいえ | CelerData がテーブルとそのパーティション、およびテーブルとそのパーティションの物理的な場所内のサブディレクトリからデータを読み取るかどうかを指定します。有効な値:true および false 。デフォルト値:false 。値 true はサブディレクトリを再帰的にリストすることを指定し、値 false はサブディレクトリを無視することを指定します。 |
MetastoreParams
データソースのメタストアと CelerData がどのように統合するかに関するパラメータのセット。
Hive メタストア
データソースのメタストアとして Hive メタストアを選択した場合、MetastoreParams
を以下のように設定します。
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "<hive_metastore_uri>"
MetastoreParams
で設定する必要があるパラメータを以下の表に示します。
パラメータ | 必須 | 説明 |
---|---|---|
hive.metastore.type | はい | Hive クラスターで使用するメタストアのタイプ。値を hive に設定します。 |
hive.metastore.uris | はい | Hive メタストアの URI。形式:thrift://<metastore_IP_address>:<metastore_port> 。Hive メタストアで高可用性 (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
で設定する必要があるパラメータを以下の表に示します。
パラメータ | 必須 | 説明 |
---|---|---|
hive.metastore.type | はい | Hive クラスターで使用するメタストアのタイプ。値を 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 へのアクセスのための認証パラメータ を参照してください。
StorageCredentialParams
CelerData クラスターがオブジェクトストレージと統合する方法に関するパラメータのセット。
AWS S3
Hive クラスターのストレージとして 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 へのアクセスのための認証パラメータ を参照してください。
Microsoft Azure Storage
このセクションでは、さまざまな Azure クラウドストレージサービスとさまざまな認証方法を使用して統合するために StorageCredentialParams
で設定する必要があるパラメータについて説明します。これらのパラメータの値を取得する方法については、Azure クラウドストレージへの認証 を参照してください。
Azure Blob Storage
Hive クラスターのストレージとして Blob Storage を選択した場合、以下のいずれかのアクションを実行します。
-
共有キー認証方法を使用するには、
StorageCredentialParams
を以下のように設定します。"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>"