想跑吗
spark.table("db.table")
.groupBy($"date")
.agg(sum($"total"))
退货
org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to alter table. java.security.AccessControlException: Permission denied: user=user, access=WRITE, inode="/sources/db/table":tech_user:bgd_group:drwxr-x---
同样的剧本,但写的是
sql("SELECT sum(total) FROM db.table group by date").show()
返回实际结果。
我不明白为什么会这样。第一个剧本到底想写什么?一些分期结果?我已对此表具有读取权限,我只尝试执行一些聚合。为此使用spark 2.2。
1条答案
按热度按时间os8fio9y1#
在spark 2.2中,默认的
spark.sql.hive.caseSensitiveInferenceMode
已从更改NEVER_INFER
至INFER_AND_SAVE
. 此模式导致spark推断(从底层文件)并尝试将区分大小写的架构保存到配置单元元存储中。如果执行命令的用户未被授予更新hms的权限,则此操作将失败。显而易见的解决方法是将推断模式设置回
NEVER_INFER
,或INFER_ONLY
如果应用程序依赖文件中的列名(区分大小写)。