我正在使用sparksql将数据从一个配置单元表加载到另一个配置单元表。我已经使用enablehivesupport创建了sparksession,并且可以使用sparksql在配置单元中创建表,但是当我使用sparksql将数据从一个配置单元表加载到另一个配置单元表时,我遇到了权限问题:
权限被拒绝:user=anonymous,access=write,path=“hivepath”。
我使用spark用户运行这个程序,但不明白为什么它使用匿名用户而不是spark。有人能建议我如何解决这个问题吗?
我正在使用下面的代码。
sparksession.sql("insert overwrite into table dbname.tablename" select * from dbname.tablename").
3条答案
按热度按时间qv7cva1a1#
第一件事是,你可以尝试为同名用户
一般来说
出口
HADOOP_USER_NAME=youruser
之前spark-submit
会有用的。连同spark一起提交如下配置。--conf "spark.yarn.appMasterEnv.HADOOP_USER_NAME=${HADDOP_USER_NAME}" \
或者你可以尝试使用sudo -su username spark-submit --class
你的班级看到这个了吗
注意:这个用户名设置应该是您初始集群设置的一部分,理想情况下,如果它完成了,那么就不需要执行上面所有的操作,而且它看起来毫无意义。
我个人不喜欢用户名硬编码的代码,它应该从外面的Spark工作。
sycxhyv72#
要验证运行的用户,请运行以下命令:-
它将向您显示当前用户,然后您可以尝试根据下面的代码设置新用户
在scala中,您可以通过
wljmcqd83#
如果您使用的是spark,则需要在spark上下文中设置用户名。