spark.table vs sql()accesscontrolexception异常

rkttyhzu  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(472)

想跑吗

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。

os8fio9y

os8fio9y1#

在spark 2.2中,默认的 spark.sql.hive.caseSensitiveInferenceMode 已从更改 NEVER_INFERINFER_AND_SAVE . 此模式导致spark推断(从底层文件)并尝试将区分大小写的架构保存到配置单元元存储中。如果执行命令的用户未被授予更新hms的权限,则此操作将失败。
显而易见的解决方法是将推断模式设置回 NEVER_INFER ,或 INFER_ONLY 如果应用程序依赖文件中的列名(区分大小写)。

相关问题