本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Hudi 在 MoR 的中繼存放區中建立兩個資料表,一個為用於快照查詢的資料表,另一個為用於讀取最佳化查詢的資料表。這兩個資料表都可供查詢。在 0.5.1 之前的 Hudi 版本中,讀取最佳化查詢的資料表具有您在建立資料表時指定的名稱。從版本 Hudi 0.5.1 開始,資料表名稱的字尾預設為 _ro
。快照查詢的資料表名稱是您指定的附有 _rt
的名稱。
讀取時的未分割合併 (MoR) 資料表
以下範例在 Athena 中建立未分割的 MoR 資料表,用於讀取最佳化查詢。請注意,讀取最佳化查詢使用輸入格式 HoodieParquetInputFormat
。
CREATE EXTERNAL TABLE `nonpartition_mor`(
`_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
/nonpartition_mor/'
下列範例會在 Athena 中建立用於快照查詢的未分割 MoR 資料表。對於快照查詢,請使用輸入格式 HoodieParquetRealtimeInputFormat
。
CREATE EXTERNAL TABLE `nonpartition_mor_rt`(
`_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.realtime.HoodieParquetRealtimeInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://amzn-s3-demo-bucket/folder
/nonpartition_mor/'
讀取時分割合併 (MoR) 資料表
下列範例會在 Athena 中建立用於讀取最佳化查詢的分割 MoR 資料表。
CREATE EXTERNAL TABLE `partition_mor`(
`_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_mor/'
以下 ALTER TABLE ADD PARTITION
範例會將兩個分割區新增至範例 partition_mor
資料表。
ALTER TABLE partition_mor ADD
PARTITION (event_type = 'one') LOCATION 's3://amzn-s3-demo-bucket/folder
/partition_mor/one/'
PARTITION (event_type = 'two') LOCATION 's3://amzn-s3-demo-bucket/folder
/partition_mor/two/'
下列範例會在 Athena 中建立用於快照查詢的分割 MoR 資料表。
CREATE EXTERNAL TABLE `partition_mor_rt`(
`_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.realtime.HoodieParquetRealtimeInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://amzn-s3-demo-bucket/folder
/partition_mor/'
同樣地,以下 ALTER TABLE ADD PARTITION
範例會將兩個分割區新增至範例 partition_mor_rt
資料表。
ALTER TABLE partition_mor_rt ADD
PARTITION (event_type = 'one') LOCATION 's3://amzn-s3-demo-bucket/folder
/partition_mor/one/'
PARTITION (event_type = 'two') LOCATION 's3://amzn-s3-demo-bucket/folder
/partition_mor/two/'