Java Spark-以字节格式读取文件作为InputStream

Java Spark-以字节格式读取文件作为InputStream,java,apache-spark,inputstream,rdd,Java,Apache Spark,Inputstream,Rdd,如何读取多个字节数组格式的文件作为spark作业中的输入流 Path pt = new Path(umfPaths); FileSystem fs = FileSystem.get(jsc.hadoopConfiguration()); fs.open(pt); 。。原因是我的输入文件的内容是字节格式的。然后将输入文件拆分为块长度为64 MB的多个文件,并存储在HDFS中。我必须使用ApacheSpark并行处理这些文件。req是将64MB的整个块作为单个文件读取并处理。

如何读取多个字节数组格式的文件作为spark作业中的输入流

Path pt = new Path(umfPaths);           
FileSystem fs = FileSystem.get(jsc.hadoopConfiguration());
fs.open(pt);

。。原因是我的输入文件的内容是字节格式的。然后将输入文件拆分为块长度为64 MB的多个文件,并存储在HDFS中。我必须使用ApacheSpark并行处理这些文件。req是将64MB的整个块作为单个文件读取并处理。通过编写自定义记录读取器或使用文件系统API(使用InputStream)读取每个文件来处理是否有效

我在SparkContext、newHadoopApiFile中使用API解决了这个问题。 我已经编写了一个CustomInputFormat类,它将执行InputFormat操作并返回一个POJO对象

javapairdd>baseRDD= sc.newAPIHadoopFile(args[2],InputFormat.class,NullWritable.class, ArrayList.class,conf)

然后忽略键,只创建一个RDD值

JavaRDD>mapLines1=baseRDD.values()

然后做了上述RDD的平面图

在InputFormat类中,我扩展了FileInputFormat,并将isSplittable重写为false以作为单个文件读取

公共类InputFormat扩展了FileInputFormat{
公众的
录像机
createRecordReader(InputSplit拆分,TaskAttemptContext上下文)
抛出IOException,InterruptedException{//Logic Goes here}
@凌驾
受保护的布尔isSplitable(JobContext上下文,路径文件){返回false;
} 
}

如果我可以问的话,这样做的目的是什么?PS:对于您提出的旧问题,您似乎有待接受的答案,请您这样做并向上投票,因为它们似乎已解决。嗨,我不能向上投票,但我将它们标记为已解决。没问题。你能回答我问你的问题吗?(做你想做的事情的目的是什么?)我刚刚编辑了我的问题,补充了一些细节。请让我知道如果你需要更多的细节,但火花将负责分割,你为什么折磨自己?(当然也可以在spark上设置分区大小)在使用sc.newhadoopapifile(…)读取时,只需指定inputformat
public class InputFormat extends  FileInputFormat {    
 public
 RecordReader<NullWritable, ArrayList<Record>> 
  createRecordReader(InputSplit split, TaskAttemptContext context)
 throws IOException, InterruptedException{  //Logic Goes here  }

      @Override
          protected boolean isSplitable(JobContext context, Path file) {             return false;     
} 
}