

# 处理 HiveQL 语句
<a name="EMRforDynamoDB.ProcessingHiveQL"></a>

Hive 是一个在 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**。