0

我有这个简单的查询,它在 IBM BigInsights2.0 的 hive 0.8 中很好:

SELECT * FROM patient WHERE hr > 50 LIMIT 5

但是,当我在 BigInsights3.0 中使用 hive 0.12 运行此查询时,它会永远运行并且不返回任何结果。实际上,以下查询和许多其他查询的情况相同:

INSERT OVERWRITE DIRECTORY '/Hospitals/dir' SELECT p.patient_id FROM
   patient1 p WHERE p.readingdate='2014-07-17'

如果我排除WHERE部分,那么这两个版本都可以。

知道在查询中包含WHERE子句时 hive 0.12 或 BigInsights3.0 可能有什么问题吗?

4

1 回答 1

0

当您在 Hive 查询中使用 WHERE 子句时,Hive 将运行 map-reduce 作业以返回结果。这就是为什么运行查询通常需要更长的时间,因为没有 WHERE 子句,Hive 可以简单地返回代表 HDFS 中表的文件内容。您应该检查由您的查询触发的 map-reduce 作业的状态,以确定是否发生了错误。您可以通过转到 BigInsights Web 控制台中的“应用程序状态”选项卡并单击“作业”来执行此操作,或者转到作业跟踪器 Web 界面。如果您看到该作业的任何失败任务,请检查特定任务的日志以找出发生的错误。解决问题后,再次运行查询。

于 2014-07-18T19:32:23.557 回答