Scala 如何从Spark指定用户在HDFS中保存数据

Scala 如何从Spark指定用户在HDFS中保存数据,scala,apache-spark,hdfs,Scala,Apache Spark,Hdfs,我想用Spark的HDFS保存一个文件,我只是尝试使用下一行: df.write.format("com.databricks.spark.csv").save(s"hdfs://hdp.asier.es:8020/assetgroup/$index/1-20170131") 但它抛出了下一个错误: Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: u

我想用Spark的HDFS保存一个文件,我只是尝试使用下一行:

df.write.format("com.databricks.spark.csv").save(s"hdfs://hdp.asier.es:8020/assetgroup/$index/1-20170131")
但它抛出了下一个错误:

Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=agomez, access=WRITE, inode="/assetgroup/1/1-20170131/_temporary/0":hdfs:hdfs:drwxr-xr-x

很明显,问题是因为它试图使用
用户:agomez
进行连接,我如何配置使用另一个具有足够权限的用户?

您需要在以用户HDFS身份登录后,从命令行更改HDFS目录
/assetgroup
上的访问权限:

hdfs dfs –chmod –R 755 /assetgroup
或者您可以将权限授予您的用户

hadoop fs -chown -R user:agomez  /assetgroup

我解决了在环境变量中定义Hadoop用户名的问题:

HADOOP_USER_NAME=sparkload

我想要的是将Spark配置为使用user=sparkload而不是我的用户agomez。可能吗?谢谢你为什么不给你的sparkload权限,你可以设置hadoop user
hadoop\u user\u NAME=sparkload
如何提交作业?您是否正在使用任何计划程序?如果是,请告诉我哪一个计划程序,将有不同的解决方案。如果不是,您正在使用命令行提交spark作业,它将把用户作为您用来登录到命令行的用户。您可能需要以sparkload身份登录并提交作业。