

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 處理 HiveQL 陳述式
<a name="EMRforDynamoDB.ProcessingHiveQL"></a>

Hive 是在 Hadoop 上執行的應用程式；Hadoop 是用於執行 MapReduce 任務的批次導向框架。在發出 HiveQL 陳述式時，Hive 會確定它是否可以立即返回結果，或者它是否必須提交 MapReduce 任務。

例如，考量 *ddb\$1features* 資料表 (從 [教學課程：使用 Amazon DynamoDB 和 Apache Hive](EMRforDynamoDB.Tutorial.md))。下列 Hive 查詢會列印州縮寫和各州境內山峰的數量：

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

Hive 不會立即返回結果。相反，它會提交由 Hadoop 架構處理的 MapReduce 任務。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**。