Java Spark:读取2个文件的迭代

Java Spark:读取2个文件的迭代,java,hadoop,bigdata,apache-spark,Java,Hadoop,Bigdata,Apache Spark,我需要一些关于Spark+Java编程的帮助。 这是我的问题: 我在hdfs中有一个大文件,叫做a,另一个大文件叫做B。 基本上,我需要同时迭代第一个(A)和第二个(B)。 我的意思是这样的(这是伪代码): 是否可以使用Spark+Java做类似的事情?也许您可以使用ApacheSpark做,但是您不应该这样做 像Spark、Hadoop等MapReduce框架被发明用来将一个大任务拆分成几个小任务,这些任务可以并行执行。对于任务的处理顺序没有任何保证,因为速度优势部分基于工作节点不必同步状态这

我需要一些关于Spark+Java编程的帮助。 这是我的问题:

我在hdfs中有一个大文件,叫做a,另一个大文件叫做B。 基本上,我需要同时迭代第一个(A)和第二个(B)。 我的意思是这样的(这是伪代码):


是否可以使用Spark+Java做类似的事情?

也许您可以使用ApacheSpark做,但是您不应该这样做

像Spark、Hadoop等MapReduce框架被发明用来将一个大任务拆分成几个小任务,这些任务可以并行执行。对于任务的处理顺序没有任何保证,因为速度优势部分基于工作节点不必同步状态这一事实

您的问题不合适,因为:

  • 它需要知道最后一次读取的值(或者从A或B中检索)。这是一个共享状态
  • 您无法并行化读取步骤,因为您无法提前知道是否必须读取A或B

如果您需要性能提升,您必须寻找其他地方。尝试找出瓶颈是什么(内存、磁盘访问等)。

连接的输出将是一组元素,其中a的第一行与B的第一行一起,依此类推?确定。我的问题是我对平等加入不感兴趣。正如您所注意到的,请看一下我的伪代码。我对迭代2个文件感兴趣,有一段时间我会保存文件a中的一个元组,然后继续迭代文件B和viceversa。我需要对它们进行迭代,找出a>B时,保存a并继续迭代B,直到aa = read.A; //Read record from A b = read.B; // Read record from B while( a != EOF ) { if ( a > b) { b= read.B; // Write Output in some way } else { a= read.A; //Write output in some way } }