

# HiveQL ステートメントの処理
<a name="EMRforDynamoDB.ProcessingHiveQL"></a>

Hive は、MapReduceジョブを実行するためのバッチ指向フレームワークとして、Hadoop上で動作するアプリケーションです。HiveQL ステートメントを発行すると、Hive は結果をすぐに返すことができるかどうか、あるいは、MapReduce ジョブを送信する必要があるかどうかを判断します。

例えば、([チュートリアル:Amazon DynamoDB と Apache Hive の使用](EMRforDynamoDB.Tutorial.md) より) ddb\$1features テーブルを考えてみます。次の Hive クエリは、州の省略した名前と、それぞれの州に存在する山頂の数を出力します。

```
SELECT state_alpha, count(*)
FROM ddb_features
WHERE feature_class = 'Summit'
GROUP BY state_alpha;
```

Hive は結果をすぐに返しません。代わりに、Hive からは MapReduceジョブが送信され、Hadoop フレームワークによって処理されます。Hive は、このジョブが完了するまで待機してから、クエリの結果を表示します。

```
AK  2
AL  2
AR  2
AZ  3
CA  7
CO  2
CT  2
ID  1
KS  1
ME  2
MI  1
MT  3
NC  1
NE  1
NM  1
NY  2
OR  5
PA  1
TN  1
TX  1
UT  4
VA  1
VT  2
WA  2
WY  3
Time taken: 8.753 seconds, Fetched: 25 row(s)
```

## ジョブのモニタリングとキャンセル
<a name="EMRforDynamoDB.MonitorAndCancelJob"></a>

Hive が Hadoop ジョブを起動すると、そのジョブからの出力が表示されます。表示されるジョブの完了ステータスは、ジョブの進捗に応じて更新されます。このステータスは、長時間更新されないこともります。(この現象は、読み込みキャパシティーのプロビジョニングが低く設定されている、大型の DynamoDB テーブルをクエリした場合に発生する可能性があります。)

**Ctrl\$1C** とタイプすることで、完了する前に任意のタイミングで、このジョブをキャンセルすることが可能です。