【发布时间】:2021-10-08 15:41:27
【问题描述】:
我在 Hive 中创建了镶木地板桌 test_table。其中一个分区的位置是'/user/hive/warehouse/prod.db/test_table/date_id=20210701'
基于此表创建视图:
create view prod.test_table_vw as
select date_id, src, telephone_number, action_date, duration from prod.test_table
然后授予某些角色选择权限:
GRANT SELECT ON TABLE prod.test_table_vw TO ROLE data_analytics;
然后具有此角色的用户尝试使用来自 pyspark 的 spark.sql() 查询此数据:
sql = spark.sql(f"""SELECT DISTINCT phone_number
FROM prod.test_table_vw
WHERE date_id=20210701""")
sql.show(5)
此代码返回权限被拒绝错误:
Py4JJavaError: An error occurred while calling o138.collectToPython.
: org.apache.hadoop.security.AccessControlException: Permission denied: user=keytabuser, access=READ_EXECUTE, inode="/user/hive/warehouse/prod.db/test_table/date_id=20210701":hive:hive:drwxrwx--x
由于其中包含一些敏感字段,我无法授予此表的选择权限,这就是我创建列列表有限的视图的原因。
问题:
为什么 Spark 会忽略 Hive 的视图选择权限?以及如何解决这个问题?
【问题讨论】:
-
好像是 Spark 的限制:docs.cloudera.com/cdp-private-cloud-base/7.1.6/…
标签: apache-spark hive apache-spark-sql