spark无法保存在hadoop中(用户拒绝许可)

sca*_*log 3 scala apache-spark cloudera-cdh

我构建了一个spark应用程序来计算文件中的单词数.我在cloudera quickstart VM上运行应用程序,当我使用cloudera用户目录时,一切都很好,但是当我想在其他用户目录中写入或读取时,我有权从hadoop拒绝.我想知道如何在spark中更改hadoop用户.

package user1.item1

import user1.{Article}
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._
import scala.util.{Try, Success, Failure}

object WordCount {
  def main(args: Array[String]) {
    Context.User = 'espacechange'
    val filename = "hdfs://quickstart.cloudera:8020/user/user1/test/wiki_test/wikipedia.txt"
    val conf = new SparkConf().setAppName("word count")
    val sc = new SparkContext(conf)
    val wikipedia = sc.textFile(filename).map(Article.parseWikipediaArticle)
    val counts = wikipedia.flatMap(line => line.text.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)

    counts.saveAsTextFile("hdfs://quickstart.cloudera:8020/user/user1/test/word_count")
  }
}
Run Code Online (Sandbox Code Playgroud)

suz*_*omo 8

这取决于您的群集的身份验证.默认情况下,您可以设置以下环境变量:

$ export HADOOP_USER_NAME=hdfs
Run Code Online (Sandbox Code Playgroud)

在提交spark工作之前尝试以上方法.