当前位置: 首页 > 知识库问答 >
问题:

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

宋成天
2023-03-14
directory
   -> folder1
      -> part_001...
      -> part_002...
   -> folder2
      -> part_001...
   ...
  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

我还发现了这个使用SequenceFile的网页,但我还是不明白如何将其应用于我的情况?

共有1个答案

司徒宇
2023-03-14

如果您正在使用Spark,可以使用wilcards如下所示:

scala>sc.textFile("path/*/*")

sc是SparkContext,如果您正在使用spark-shell,则默认初始化它,或者如果您正在创建自己的程序,则必须自己实例一个SparkContext。

小心下面的标志:

scala> sc.hadoopConfiguration.get("mapreduce.input.fileinputformat.input.dir.recursive") 
> res6: String = null
sc.hadoopConfiguration.set("mapreduce.input.fileinputformat.input.dir.recursive","true")
 类似资料:
  • 问题内容: 我有一个根目录目录,其中包含多个子目录,所有子目录均包含文件名data.txt。我想做的是编写一个脚本,该脚本进入“根”目录,然后读取所有子目录并读取子目录中的每个“ data.txt”,然后将每个data.txt文件中的内容写入输出文件。 这是我的代码片段: 我的dosomething()部分-如果仅针对一个文件运行该部分,我已经测试并确认它可以正常工作。我还确认,如果我告诉它打印文

  • 我无法从spark shell(spark版本为1.2.1)读取HDFS(英特尔发行版hadoop,hadoop版本为1.0.3)。我使用mvn-Dhadoop命令构建了spark。version=1.0.3 clean package,启动spark shell并使用sc.textFile()读取HDFS文件,异常为: 警告hdfs。DFSClient:无法连接到/10.xx.xx.xx:500

  • 本文向大家介绍nodejs 递归拷贝、读取目录下所有文件和目录,包括了nodejs 递归拷贝、读取目录下所有文件和目录的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下nodejs 递归拷贝目录下所有文件和目录,具体代码如下所示: ps:下面看下Nodejs递归读取目录下的所有文件 递归读取当前目录下的所有文件。 总结 以上所述是小编给大家介绍的nodejs 递归拷贝、读取目录下所有文件和目

  • 问题内容: 我需要从Java WAR应用程序的类路径中读取文本文件。如何将其读取为InputStream。文件位于/ WEB-INF / classes /文件夹中,但是当我使用以下代码时,它仅返回null。 问题答案: 在其前面加上正斜杠以表示类路径的根: 或者,您可以使用来查找相对于上下文根的资源。因此,类将是。

  • 我试图阶段一个项目从工作目录到服务器(同一台机器)。使用以下代码: 我希望看到所有的文件都被复制。但是,它使目录结构扁平化-所有目录都被复制,但每个文件都放在根目录中 Gulp看起来是一个很好的构建工具,但是复制项目应该是一个简单的过程吗?

  • 我有一个大的(>500M行)CSV文件。这个CSV文件中的每一行都包含一个位于HDFS上的二进制文件的路径。我想使用Spark读取这些文件中的每一个,处理它们,并将结果写到另一个CSV文件或表中。 在驱动程序中执行此操作非常简单,下面的代码完成了这项工作 但是失败 是否可以让执行者直接访问HDFS文件或HDFS文件系统?或者,是否有一种有效的方法来读取HDFS/S3上数百万个二进制文件并用Spar