Apache spark 无法使用sparksql在配置单元中写入数据
我正在使用spark Sql将数据从一个配置单元表加载到另一个配置单元表。我已经使用enableHiveSupport创建了sparksession,并且我能够使用sparksql在配置单元中创建表,但是当我使用sparksql将数据从一个配置单元表加载到另一个配置单元表时,我遇到了权限问题: 权限被拒绝:user=anonymous,access=WRITE,path=“hivepath” 我使用spark用户运行此程序,但无法理解为什么它将匿名用户替换为spark用户。有人能建议我如何解决这个问题吗 我正在使用下面的代码Apache spark 无法使用sparksql在配置单元中写入数据,apache-spark,hadoop,hive,apache-spark-sql,Apache Spark,Hadoop,Hive,Apache Spark Sql,我正在使用spark Sql将数据从一个配置单元表加载到另一个配置单元表。我已经使用enableHiveSupport创建了sparksession,并且我能够使用sparksql在配置单元中创建表,但是当我使用sparksql将数据从一个配置单元表加载到另一个配置单元表时,我遇到了权限问题: 权限被拒绝:user=anonymous,access=WRITE,path=“hivepath” 我使用spark用户运行此程序,但无法理解为什么它将匿名用户替换为spark用户。有人能建议我如何解决这
sparksession.sql("insert overwrite into table dbname.tablename" select * from dbname.tablename").
如果您使用的是spark,则需要在spark上下文中设置用户名
System.setProperty("HADOOP_USER_NAME","newUserName")
val spark = SparkSession
.builder()
.appName("SparkSessionApp")
.master("local[*]")
.getOrCreate()
println(spark.sparkContext.sparkUser)
如果您使用的是spark,则需要在spark上下文中设置用户名
System.setProperty("HADOOP_USER_NAME","newUserName")
val spark = SparkSession
.builder()
.appName("SparkSessionApp")
.master("local[*]")
.getOrCreate()
println(spark.sparkContext.sparkUser)
要验证正在运行的用户, 运行以下命令:-
sc.sparkUser
它将向您显示当前用户,然后
您可以尝试按照以下代码设置新用户
在scala中,您可以通过
System.setProperty("HADOOP_USER_NAME","newUserName")
要验证正在运行的用户, 运行以下命令:-
sc.sparkUser
它将向您显示当前用户,然后
您可以尝试按照以下代码设置新用户
在scala中,您可以通过
System.setProperty("HADOOP_USER_NAME","newUserName")
第一件事是,您可以为同名用户尝试此功能
root@host:~# su - hdfs
hdfs@host:~$ hadoop fs -mkdir /user/anonymous
hdfs@host:~$ hadoop fs -chown anonymous /user/anonymous
大体上
导出HADOOP\u USER\u NAME=youruser
,然后spark submit
才能工作。
与spark一起提交如下配置
--conf“spark.warn.appMasterEnv.HADOOP\u USER\u NAME=${HADDOP\u USER\u NAME}”\
或者,您可以尝试使用
sudo-su用户名spark submit--class
your class
看
注意:此用户名设置应该是初始设置的一部分
理想情况下,如果集群设置完成,则无需执行上述所有操作
而且它看起来毫无生气
我个人不喜欢在代码中硬编码用户名,它应该来自spark工作之外。首先,您可以为同名用户尝试此功能
root@host:~# su - hdfs
hdfs@host:~$ hadoop fs -mkdir /user/anonymous
hdfs@host:~$ hadoop fs -chown anonymous /user/anonymous
大体上
导出HADOOP\u USER\u NAME=youruser
,然后spark submit
才能工作。
与spark一起提交如下配置
--conf“spark.warn.appMasterEnv.HADOOP\u USER\u NAME=${HADDOP\u USER\u NAME}”\
或者,您可以尝试使用
sudo-su用户名spark submit--class
your class
看
注意:此用户名设置应该是初始设置的一部分
理想情况下,如果集群设置完成,则无需执行上述所有操作
而且它看起来毫无生气
我个人不喜欢在代码中硬编码用户名,它应该来自spark作业之外。当我执行上述命令时,我将用户名作为spark,但在执行sparksession.sql时(“将覆盖插入表dbname.tablename”选择*from dbname.tablename”)。获取相同的匿名用户。您将需要粘贴所有代码,而不仅仅是一条命令。当我执行上述命令时,我将用户名获取为spark,但在执行sparksession.sql时(“将覆盖插入表dbname.tablename”选择*from dbname.tablename”)。获取相同的匿名用户。您需要粘贴所有代码,而不仅仅是一条命令尝试获取相同的问题sc.sparkUserTried的输出仍然获取相同的问题sc.SPARKUSER的输出为什么您的查询中有三个
“
?为什么有三个”
在您的查询中?此答案有用吗?此答案有用吗?