

# 読み取り時マージ (MOR) テーブル作成の例
<a name="querying-hudi-merge-on-read-create-table-examples"></a>

Hudi は、MoR のメタストアに 2 つのテーブルを作成します。1 つはスナップショットクエリ用のテーブルで、もう 1 つは読み取り最適化クエリ用のテーブルです。両方のテーブルがクエリ可能です。0.5.1 より前の Hudi バージョンでは、読み取り最適化クエリのテーブルには、テーブルの作成時に指定した名前がありました。Hudi バージョン 0.5.1 以降、デフォルトでテーブル名の末尾に `_ro` が付きます。スナップショットクエリのテーブルの名前は、指定した名前に `_rt` が付きます。

## パーティション化されていない読み取り時マージ (MOR) テーブル
<a name="querying-hudi-nonpartitioned-merge-on-read-table"></a>

次の例では、読み取り最適化クエリのために、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) テーブル
<a name="querying-hudi-partitioned-merge-on-read-table"></a>

次の例では、読み取り最適化クエリのために、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` テーブルに 2 つのパーティションを追加します。

```
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` テーブルに 2 つのパーティションを追加します。

```
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/'
```