Hadoop spark sc.textfile是如何详细工作的?

Hadoop spark sc.textfile是如何详细工作的?,hadoop,apache-spark,Hadoop,Apache Spark,我想详细了解sc.textfile的工作原理。 我在SparkContext.scala中找到了文本文件源代码,但是它们包含了太多关于调度程序、阶段和任务提交的信息。我想要的是sc.textfile如何从hdfs读取文件,以及sc.textfile如何使用通配符匹配多个文件。 在哪里可以找到源代码?Apache Spark使用Hadoop客户端库读取文件。因此,您必须阅读hadoop客户端源代码才能了解更多信息: ApacheSpark使用Hadoop客户端库读取文件。因此,您必须阅读hadoo

我想详细了解sc.textfile的工作原理。 我在SparkContext.scala中找到了文本文件源代码,但是它们包含了太多关于调度程序、阶段和任务提交的信息。我想要的是sc.textfile如何从hdfs读取文件,以及sc.textfile如何使用通配符匹配多个文件。
在哪里可以找到源代码?

Apache Spark使用Hadoop客户端库读取文件。因此,您必须阅读hadoop客户端源代码才能了解更多信息:


ApacheSpark使用Hadoop客户端库读取文件。因此,您必须阅读hadoop客户端源代码才能了解更多信息:


core\src\main\scala\org\apache\spark\rdd\HadoopRDD.scala中的计算函数

下面是函数中的一些代码

  var reader: RecordReader[K, V] = null
  val inputFormat = getInputFormat(jobConf)
  HadoopRDD.addLocalConfiguration(new SimpleDateFormat("yyyyMMddHHmm").format(createTime),
   context.stageId, theSplit.index, context.attemptNumber, jobConf)
  reader = inputFormat.getRecordReader(split.inputSplit.value, jobConf, Reporter.NULL)

  // Register an on-task-completion callback to close the input stream.
  context.addTaskCompletionListener{ context => closeIfNeeded() }
  val key: K = reader.createKey()
  val value: V = reader.createValue()

core\src\main\scala\org\apache\spark\rdd\HadoopRDD.scala中的计算函数

下面是函数中的一些代码

  var reader: RecordReader[K, V] = null
  val inputFormat = getInputFormat(jobConf)
  HadoopRDD.addLocalConfiguration(new SimpleDateFormat("yyyyMMddHHmm").format(createTime),
   context.stageId, theSplit.index, context.attemptNumber, jobConf)
  reader = inputFormat.getRecordReader(split.inputSplit.value, jobConf, Reporter.NULL)

  // Register an on-task-completion callback to close the input stream.
  context.addTaskCompletionListener{ context => closeIfNeeded() }
  val key: K = reader.createKey()
  val value: V = reader.createValue()
textFile是org.apache.spark.SparkContext类的一个方法 从HDFS、所有节点上可用的本地文件系统或任何 Hadoop支持的文件系统URI,并将其作为字符串的RDD返回

sc.textFile(path,minpartions)

> @param path path to the text file on a supported file system  
> @param minPartitions suggested minimum number of partitions for the resulting RDD
> @return RDD of lines of the text file
它在内部使用Hadoop RDD,这是一种RDD,提供读取Hadoop中存储的数据的核心功能

Hadoop Rdd看起来像这样

HadoopRDD(
      sc, //Sparkcontext
      confBroadcast, //A general Hadoop Configuration, or a subclass of it
      Some(setInputPathsFunc),//Optional closure used to initialize any JobConf that HadoopRDD creates.       inputFormatClass,
      keyClass,
      valueClass,
      minPartitions)
在textFile方法中,我们调用create a hadoopRDD,其中包含一些硬编码值:

HadoopRDD(
      sc, //Sparkcontext
      confBroadcast, //A general Hadoop Configuration, or a subclass of it
      Some(setInputPathsFunc),//Optional closure used to initialize any JobConf that HadoopRDD creates. 
      classOf[TextInputFormat],
      classOf[LongWritable],
      classOf[Text],
      minPartitions)
由于这些硬编码的值,我们只能读取文本文件,因此如果我们想读取任何其他类型的文件,我们使用HadoopRdd。

textFile是org.apache.spark.SparkContext类的一种方法,它 从HDFS、所有节点上可用的本地文件系统或任何 Hadoop支持的文件系统URI,并将其作为字符串的RDD返回

sc.textFile(path,minpartions)

> @param path path to the text file on a supported file system  
> @param minPartitions suggested minimum number of partitions for the resulting RDD
> @return RDD of lines of the text file
它在内部使用Hadoop RDD,这是一种RDD,提供读取Hadoop中存储的数据的核心功能

Hadoop Rdd看起来像这样

HadoopRDD(
      sc, //Sparkcontext
      confBroadcast, //A general Hadoop Configuration, or a subclass of it
      Some(setInputPathsFunc),//Optional closure used to initialize any JobConf that HadoopRDD creates.       inputFormatClass,
      keyClass,
      valueClass,
      minPartitions)
在textFile方法中,我们调用create a hadoopRDD,其中包含一些硬编码值:

HadoopRDD(
      sc, //Sparkcontext
      confBroadcast, //A general Hadoop Configuration, or a subclass of it
      Some(setInputPathsFunc),//Optional closure used to initialize any JobConf that HadoopRDD creates. 
      classOf[TextInputFormat],
      classOf[LongWritable],
      classOf[Text],
      minPartitions)
由于这些硬编码的值,我们只能读取文本文件,所以如果我们想读取任何其他类型的文件,我们使用HadoopRdd