ファイル外部テーブル
このトピックでは、AWS S3 内の Parquet および ORC データファイルを直接クエリするためのファイル外部テーブルの使用方法について説明します。
使用上の注意
- ファイル外部テーブルは
default_catalog内のデータベースに作成する必要があります。 - サポートされているのは Parquet および ORC データファイルのみです。
- ファイル外部テーブルはデータのクエリにのみ使用できます。ターゲットデータファイルへの INSERT、DELETE、および DROP 操作はサポートされていません。
ファイル外部テーブルの作成
構文
CREATE EXTERNAL TABLE <table_name>
(
<col_name> <col_type> [NULL | NOT NULL] [COMMENT "<comment>"]
)
ENGINE=file
COMMENT [comment]
PROPERTIES
(
FileLayoutParams,
StorageCredentialParams,
)
| パラメータ | 必須 | 説明 |
|---|---|---|
| table_name | Yes | ファイル外部テーブルの名前。命名規則は次のとおりです。名前には文字、数字 (0-9)、およびアンダースコア (_) を含めることができます。名前は文字で始める必要があります。名前の長さは 64 文字を超えてはなりません。 |
| col_name | Yes | ファイル外部テーブルの列名。ファイル外部テーブルの列名はターゲットデータファイルの列名と同じである必要がありますが、大文字と小文字は区別されません。ファイル外部テーブルの列の順序はターゲットデータファイルの順序と異なる場合があります。 |
| col_type | Yes | ファイル外部テーブルの列タイプ。このパラメータはターゲットデータファイルの列タイプに基づいて指定する必要があります。詳細については、列タイプのマッピングを参照してください。 |
| NULL | NOT NULL | No | ファイル外部テーブルの列が NULL を許可するかどうか。
NULL | NOT NULL 修飾子は次のルールに基づいて指定する必要があります。
|
| comment | No | ファイル外部テーブルの列のコメント。 |
| ENGINE | Yes | エンジンのタイプ。値を file に設定します。 |
| comment | No | ファイル外部テーブルの説明。 |
ファイルの読み取り方法と AWS 認証サービス (AWS IAM) との統合を説明するために、PROPERTIES 内で FileLayoutParams と StorageCredentialParams を設定する必要があります。
FileLayoutParams
FileLayoutParams :: =
"path" = "<file_path>",
"format" = "<file_format>"
| パラメータ | 必須 | 説明 |
|---|---|---|
| path | Yes | Amazon S3 に保存されているデータファイルのパス。パスの形式は s3://<bucket name>/<folder>/ です。パスを入力する際には次のルールに注意してください。
|
| format | Yes | データファイルの形式。サポートされているのは Parquet および ORC のみです。 |
| enable_recursive_listing | No | 現在のパスの下にあるすべてのファイルを再帰的にトラバースするかどうかを指定します。デフォルト値: false。 |
StorageCredentialParams
AWS S3
ファイルストレージとして AWS S3 を選択する場合、次のパラメータを設定します。
-- S3 にアクセスする際の認証方法としてインスタンスプロファイルを選択します。
StorageCredentialParams (for AWS S3) :: =
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "<aws_s3_region>"
-- S3 にアクセスする際の認証方法としてアサインされたロールを選択します。
StorageCredentialParams (for AWS S3) :: =
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<ARN of your assumed role>",
"aws.s3.region" = "<aws_s3_region>"
| パラメータ名 | 必須 | 説明 |
|---|---|---|
| aws.s3.use_instance_profile | Yes | AWS S3 にアクセスする際の認証方法としてインスタンスプロファイルとアサインされたロールを有効にするかどうかを指定します。有効な値: true および false。true は Celerdata が両方の認証方法を使用できることを許可します。デフォルト値: true。 |
| aws.s3.iam_role_arn | Yes | ターゲットデータファイルが保存されている S3 バケットに対する権限を持つ IAM ロールの ARN。AWS S3 にアクセスする際の認証方法としてアサインされたロールを使用する場合、このパラメータを指定する必要があります。Celerdata は、catalog を使用して Hive データを分析する際にこのロールをアサインします。 |
| aws.s3.region | Yes | S3 バケットが存在するリージョン、例えば us-west-1。 |
AWS S3 にアクセスするための認証方法の選択方法や AWS IAM コンソールでのアクセス制御ポリシーの設定方法については、AWS S3 へのアクセスのための認証パラメータを参照してください。
列タイプのマッピング
次の表は、ターゲットデータファイルとファイル外部テーブル間の列タイプのマッピングを示しています。
| データファイル | ファイル外部テーブル |
|---|---|
| INT/INTEGER | INT |
| BIGINT | BIGINT |
| TIMESTAMP | DATETIME。TIMESTAMP は現在のセッションのタイムゾーン設定に基づいてタイムゾーンなしの DATETIME に変換され、精度の一部が失われることに注意してください。 |
| STRING | STRING |
| VARCHAR | VARCHAR |
| CHAR | CHAR |
| DOUBLE | DOUBLE |
| FLOAT | FLOAT |
| DECIMAL | DECIMAL |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| MAP | MAP |
| STRUCT | STRUCT |
ファイル外部テーブルを使用したデータの分析
SELECT COUNT(*) FROM <file_external_table>
例
例 1: ファイル外部テーブルを作成し、インスタンスプロファイルベースの認証方法を使用して AWS S3 内の単一の Parquet ファイルにアクセスします。
CREATE EXTERNAL TABLE table_1
(
name string,
id int
)
ENGINE=file
PROPERTIES
(
"path" = "s3://bucket-test/folder1/raw_0.parquet",
"format" = "parquet",
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "us-west-2"
);
例 2: ファイル外部テーブルを作成し、アサインされたロールベースの認証方法を使用して AWS S3 内のターゲットファイルパスの下にあるすべての ORC ファイルにアクセスします。
CREATE EXTERNAL TABLE table_1
(
name string,
id int
)
ENGINE=file
PROPERTIES
(
"path" = "s3://bucket-test/folder1/",
"format" = "orc",
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "arn:aws:iam::51234343412:role/role_name_in_aws_iam",
"aws.s3.region" = "us-west-2"
);