Spark 上的 Hive 不返回聚合或连接查询的结果

Posted

技术标签:

【中文标题】Spark 上的 Hive 不返回聚合或连接查询的结果【英文标题】:Hive on Spark return no results on aggregation or join queries 【发布时间】:2019-06-10 13:10:30 【问题描述】:

聚合或连接不会从外部表上的 Hive 查询返回任何结果。

我已设置 hive 以使用 Spark(独立)作为查询引擎而不是 MR。

我已经创建了一个外部表(来自 elastichsearch 索引)。

使用 SELECT 一切正常并返回数据:

SELECT * FROM table1 LIMIT 100

尝试使用简单的计数不返回数据:

SELECT count(*) FROM table1

我使用 JDBC (beeline) 在 Hive 上执行查询

从日志来看,选择查询似乎是直接在弹性上执行的(没有生成火花作业)。执行计数查询时,会生成一个 spark 作业并成功完成,但会返回任何结果。

【问题讨论】:

【参考方案1】:

显然,您使用的联接正在过滤掉所有记录。检查您要加入的条件是否存在于两个表中。尝试将连接类型从内部更改为左侧,看看是否有任何结果。

如果您仍然无法管理,能否从您尝试加入的 2 个表中添加一个示例?

告诉我。

【讨论】:

我发现了问题。 Spark 在文件系统中写入查询结果并告诉配置单元在哪里读取它们。 Hive 和 spark 应该共享写入这些结果的位置(如 HDFS) 是的,这是您必须为两者设置的配置

以上是关于Spark 上的 Hive 不返回聚合或连接查询的结果的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spark 查询 hive 表

使用 Spark 查询位于远程集群上的 Hive 数据

hive 或 impala 中的计算表统计信息如何加速 Spark SQL 中的查询?

Spark SQL分区感知查询hive表

单个记录查找的 Spark 性能

如何在使用 Spark 读取时将数据分配到 X 分区?