首页 > 解决方案 > PySpark:无法使用 spark.sql 读取 hive orc 表

问题描述

使用 spark 将 df 写入 hdfs:

df.write.partitionBy("date").mode("append").format("ORC").save("/tmp/table1")

在此之上创建 Hive 外部表 (default.table1)

我可以使用直线阅读此表。

select * from default.table1; --> works fine

我可以使用 spark 读取此文件夹

spark.read.orc("/tmp/table1").show()  # --> works fine

但是,当我使用 spark 读取此配置单元表时,出现错误:

spark.sql("select * from default.table1").show() # --> error

当我计算这张表时,它也可以正常工作:

spark.sql("select count(*) from default.table1").show() # --> works fine

此外,当我将 spark df 作为 csv 写入 hdfs 时,我将其读取为 spark.sql(hive)没有问题

以下是错误信息:

“Py4JJavaError:调用 0192.showString 时出错。”

标签: pythonpysparkhiveapache-spark-sqlorc

解决方案


通过修复 hive ddl 设法解决了这个问题。

必须包含该行

“WITH SERDEPROPERTIES ...”以确保 hiveContext 能够读取 spark 中的数据


推荐阅读