spark.table vs sql() AccessControlException



正在尝试运行

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。

在 Spark 2.2 中,spark.sql.hive.caseSensitiveInferenceMode的默认值从NEVER_INFER更改为INFER_AND_SAVE。此模式会导致 Spark 推断(从基础文件(并尝试将区分大小写的架构保存到 Hive 元存储中。如果未授予执行命令的用户更新HMS的权限,此操作将失败。

显而易见的解决方法是将推理模式设置回NEVER_INFER,或者如果应用程序依赖于文件中存在的列名称 (CaseSensitivE(,则INFER_ONLY

相关内容

  • 没有找到相关文章

最新更新