Apache Spark 是否可以从executor中读取hdfs文件

qvtsj1bj  于 2023-04-21  发布在  Apache
关注(0)|答案(1)|浏览(142)

我有一个简单的Spark应用程序来说明我的问题,我想读取mapPartitions操作符中的hdfs文件,使用SparkContext.textFile,这样,我就可以读取每个分区中的文件,并使用它来处理partitionIter
看起来我不能使用SparkContext?那么,我该怎么做才能达到我的目的:hdfs文件使用partitionIter。

object SparkTest2 {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("SparkTest")
    val sc = new SparkContext(conf)
    val rdd = sc.textFile("test1")
    rdd.mapPartitions {
      partitionIter => {
        //Read from HDFS for each partition
        //Is it possible to read hdfs files from within executor
        Seq("a").toIterator
      }
    }.collect()

  }
}
dbf7pr2w

dbf7pr2w1#

恕我直言:通常使用标准的方式(读取驱动程序并使用spark函数传递给执行器)在操作上比以非标准的方式做事情要容易得多。所以在这种情况下(细节有限)将驱动程序上的文件作为dataframe读取并与之连接。
也就是说,您是否尝试过为您的spark-submit(或pyspark)使用--files选项:

--files FILES     Comma-separated list of files to be placed in the working
                  directory of each executor. File paths of these files
                  in executors can be accessed via SparkFiles.get(fileName).

相关问题