AWS Glue で既に Hudi テーブルを作成している場合は、Athena でそれらを直接クエリできます。Athena でパーティション化された Hudi テーブルを作成するときは、クエリを実行する前に、ALTER TABLE
ADD PARTITION
を実行して Hudi データをロードする必要があります。
パーティション化されていない CoW テーブル
以下の例は、Athena でパーティション分割されていない CoW テーブルを作成します。
CREATE EXTERNAL TABLE `non_partition_cow`(
`_hoodie_commit_time` string,
`_hoodie_commit_seqno` string,
`_hoodie_record_key` string,
`_hoodie_partition_path` string,
`_hoodie_file_name` string,
`event_id` string,
`event_time` string,
`event_name` string,
`event_guests` int,
`event_type` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://amzn-s3-demo-bucket/folder
/non_partition_cow/'
パーティション化された CoW テーブル
以下の例は、Athena でパーティション分割された CoW テーブルを作成します。
CREATE EXTERNAL TABLE `partition_cow`(
`_hoodie_commit_time` string,
`_hoodie_commit_seqno` string,
`_hoodie_record_key` string,
`_hoodie_partition_path` string,
`_hoodie_file_name` string,
`event_id` string,
`event_time` string,
`event_name` string,
`event_guests` int)
PARTITIONED BY (
`event_type` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://amzn-s3-demo-bucket/folder
/partition_cow/'
次の ALTER TABLE ADD PARTITION
の例では、サンプル partition_cow
テーブルに 2 つのパーティションを追加します。
ALTER TABLE partition_cow ADD
PARTITION (event_type = 'one') LOCATION 's3://amzn-s3-demo-bucket/folder
/partition_cow/one/'
PARTITION (event_type = 'two') LOCATION 's3://amzn-s3-demo-bucket/folder
/partition_cow/two/'