Spark变换和排序

时间:2016-06-08 06:31:47

标签: apache-spark

我正在使用spark java API将不同类型的文件(text,xml,csv等)解析为特定的文本文件格式。此输出文件维护文件头,开始标记,数据头,数据和结束标记的顺序。所有这些元素都在某个时刻从输入文件中提取出来。 我试图通过以下两种方式实现这一目标:

  1. 使用sparks textFile 将文件读取到RDD,并使用 map mapPartions 执行解析,返回新的RDD。
  2. 使用sparks textFile 读取文件,使用 coalesce 缩减为1个分区,并使用返回新RDD的 mapPartions 执行解析。
  3. 虽然我不关心实际数据的排序,但是第一种方法我无法保持文件头,开始标记,数据标题和结束标记的所需顺序。 后者适用于我,但我知道这不是有效的方法,可能会导致BIG文件出现问题。

    有没有有效的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

你的假设是正确的。第二种选择只是取消了应用程序的分布方面,因此它不具备可扩展性。对于订单问题,由于概念是异步的,当数据驻留在不同节点时,我们无法跟踪订单。你可以做的是一些预处理,取消订单的需要。意思是,将行合并到行顺序无关紧要的点,然后才分发文件。除非您可以对文件结构做出假设,例如属于一起的行数,否则我将使用上述内容。