Dear All,

We had an issue that:

*Environment:*
OS: Centos 7.5 Hive Server 2.3.4  Metastore Mysql Server 5.7.25
*Purpose:*
I want to create a hive table using spark-shell/spark-submit jobs under
account robot.prod  and this table can be accessed(select)  by beeline
logged with the same account.


*On env B:*
The database owner is set as account robot.prod. Both spark shell and
beeline is logged with account robot.prod in bash.
I created a new table from parquet files with spark-shell
It seems that the hive server created a grant SELECT rule for the newly
created table  and I can select from the table using beeline with the same
account.
The rule can be seen in the screenshot below.

We also noticed that  for the grant query:  the grantor is "*metastore*"
Which is different from the normal grantor "*hive*"

Could you please advise why there is a difference?

[image: image.png]

*On env A:*

The table can be created with spark-shell. It cannot be selected by the
same account using beeline.
The error is :

*  Error: Error while compiling statement: FAILED:
HiveAccessControlException Permission denied: Principal [name=robot.prod,
type=USER] does not have following privileges for operation QUERY [[SELECT]
on Object [type=TABLE_OR_VIEW, name=robot_prod. test_user  ]]
(state=42000,code=40000)  *


It seems that hive server didn't create a grant query for the newly created
table.

1 Could you please advise what could be the problem in env A?
2 Why there isn't any auto grant SELECT query to a newly created table in
env A.
3  The grantor is "*metastore*" Which is different from the normal grantor
"hive". Why there is such a difference?




*Here are the command details:*

1 Spark-shell:
create hive table from a local file using below commands
under robot.prod@test server
#spark-shell
spark.sql("use robot_prod")
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.sql("SELECT * FROM
parquet.`/usr/local/spark/examples/src/main/resources/users.parquet`")
df.write.mode("overwrite").saveAsTable(" robot_prod.test_user")

2 beeline:
login with robot.prod@test_server
#beeline
!connect jdbc:hive2://........:10000 <http://192.168.86.120:10000/>
robot.prod
use robot_prod;
select * from   robot_prod.test_user;
Then we have following errors:
Error: Error while compiling statement: FAILED: HiveAccessControlException
Permission denied: Principal [name=robot.prod, type=USER] does not have
following privileges for operation QUERY [[SELECT] on Object
[type=TABLE_OR_VIEW, name=robot_prod. test_user  ]] (state=42000,code=40000)

Thanks and regards,

[image: DA_Logo.png] <http://www.digitalalchemy.asia/>

Justin Zhang


Digital Alchemy (Nanjing) Limited Company

T:2046

[image: DA_Blog.jpg] <http://www.digitalalchemy.com.au/blog/>[image:
DA_Linkedin.jpg][image: DA_Twitter.jpg]
<https://www.linkedin.com/company/digital-alchemy>[image: DA_Facebook.jpg]
<https://www.facebook.com/DigitalAlchemyLimited>

[image: CIO_outlook_banners_600x120_v2b.png]
<https://customer-experience-management.apacciooutlook.com/vendor/digital-alchemy-dynamic-decisionpowered-personalized-cem-solutions-cid-2278-mid-119.html>

Reply via email to