Spark返回Empty DataFrame但在Hive中填充

时间:2018-03-06 12:43:40

标签: apache-spark hive apache-spark-sql

我在hive中有一张表

db.table_name

当我在hive中运行以下内容时,我会得到结果

SELECT * FROM db.table_name;

当我在spark-shell中运行以下内容时

spark.read.table("db.table_name").show

它没有显示任何内容。同样

sql("SELECT * FROM db.table_name").show

也没有显示。在节目之前选择任意列也不显示任何内容。执行计数表明该表有0行。

运行相同的查询将对同一数据库中的其他表起作用。

Spark版本:2.2.0.cloudera1

该表是使用

创建的
table.write.mode(SaveMode.Overwrite).saveAsTable("db.table_name")

如果我直接使用镶木地板文件阅读文件,那就可以了。

spark.read.parquet(<path-to-files>).show

编辑: 我目前正在使用一种解决方法,描述表并获取位置并使用spark.read.parquet。

2 个答案:

答案 0 :(得分:0)

您是否刷新了元数据表?也许你需要刷新表来访问新数据。

pd.DataFrame.resample("W").ffill()

答案 1 :(得分:0)

我通过使用

解决了问题
query_result.write.mode(SaveMode.Overwrite).format("hive").saveAsTable("table")

将结果存储在文本文件中。 Hive实木复合地板可能不兼容。

我还发现了有关它的Cloudera报告(CDH Release Notes):他们建议手动创建Hive表,然后从临时表或通过查询加载数据。