python - 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 时出错。”
解决方案
通过修复 hive ddl 设法解决了这个问题。
必须包含该行
“WITH SERDEPROPERTIES ...”以确保 hiveContext 能够读取 spark 中的数据
推荐阅读
- three.js - 检查点位于多边形内 - 无法正常工作
- html - 当我尝试在离子卡中显示 Firestore 中的特定文档时出错?
- c++ - 为什么我不能用统一初始化来初始化字符串?
- python - 洛伦兹系统的龙格库塔常数发散?
- hibernate - Spring Boot 应用程序抛出 NonUniqueResultException
- firebase - Vuex 和 API 调用
- python - 如何使用 walk 函数返回每个文件的最深目录名和文件名?
- ios - MIFARE 只读和写保护块同时?
- php - 在另一个页面中调用一个页面会使网站变慢?
- regex - 用于匹配操作序列的正则表达式