spark返回空Dataframe,但填充在配置单元中

7dl7o3gd  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(386)

我在 hive 里有张table

db.table_name

当我在配置单元中运行以下命令时,我会得到结果

SELECT * FROM db.table_name;

当我在一个Spark壳里运行以下程序时

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

什么也看不出来。同样地

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

也没有显示任何内容。在显示之前选择任意列也不会显示任何内容。执行计数表示表有0行。
对同一数据库中的其他表运行相同的查询。
spark版本:2.2.0.1
该表是使用

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

如果我直接用Parquet文件来读取文件,它就会工作。

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

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

aij0ehis

aij0ehis1#

你刷新元数据表了吗?可能需要刷新表以访问新数据。

spark.catalog.refreshTable("my_table")
3gtaxfhh

3gtaxfhh2#

我用电脑解决了这个问题

query_result.write.mode(SaveMode.Overwrite).format("hive").saveAsTable("table")

它将结果存储在文本文件中。可能有一些不兼容的HiveParquet。
我还发现了一个cloudera报告(cdh发行说明):他们建议手动创建hive表,然后从临时表或通过查询加载数据。

相关问题