尝试跑步
spark.table("db.table")
.groupBy($"date")
.agg(sum($"total"))
returns
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。
在 Spark 2.2 中,默认为spark.sql.hive.caseSensitiveInferenceMode
被更改为NEVER_INFER
to INFER_AND_SAVE
。此模式使 Spark 进行推断(从底层文件)并尝试保存Hive 元存储中区分大小写的架构。如果执行命令的用户未获得更新 HMS 的权限,此操作将会失败。
明显的解决方法是将推理模式设置回NEVER_INFER
, or INFER_ONLY
如果应用程序依赖于文件中存在的列名称(CaseSensitiveE)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)