小编use*_*562的帖子

如何使用Spark以递归方式从目录中读取Hadoop文件?

在给定目录中,我有许多不同的文件夹,在每个文件夹中我都有Hadoop文件(part_001等等).

directory
   -> folder1
      -> part_001...
      -> part_002...
   -> folder2
      -> part_001...
   ...
Run Code Online (Sandbox Code Playgroud)

给定目录,如何递归读取此目录中所有文件夹的内容,并使用Scala将此内容加载到Spark中的单个RDD中?

我发现了这个,但它没有递归进入子文件夹(我正在使用import org.apache.hadoop.mapreduce.lib.input):

  var job: Job = null
  try {
    job = Job.getInstance()
    FileInputFormat.setInputPaths(job, new Path("s3n://" + bucketNameData + "/" + directoryS3))
    FileInputFormat.setInputDirRecursive(job, true)
  } catch {
    case ioe: IOException => ioe.printStackTrace(); System.exit(1);
  }
  val sourceData = sc.newAPIHadoopRDD(job.getConfiguration(), classOf[TextInputFormat], classOf[LongWritable], classOf[Text]).values
Run Code Online (Sandbox Code Playgroud)

我也发现这个网页使用SequenceFile,但同样,我不知道如何将它应用到我的情况?

hadoop apache-spark

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

apache-spark ×1

hadoop ×1