2016-06-08 51 views
0

我正在使用Spark java API将不同类型的文件(文本,xml,csv等)解析为特定的文本文件格式。该输出文件保持文件头,开始标签,数据头,数据和结束标签的顺序。所有这些元素都是在输入文件中提取的。 我试着以下2种方式实现这一点:使用火花TEXTFILESpark转换和排序

  1. 读文件到RDD和使用地图mapPartions返回新RDD进行解析。
  2. 使用Read文件火花TEXTFILE,减少使用聚结 1个分区,并通过使用mapPartions返回新RDD进行解析。

虽然我不关心实际数据的排序问题,但使用第一种方法时,我无法保留文件标题,开始标记,数据标题和结束标记的所需顺序。 后者适用于我,但我知道这是不是有效的方式,并可能导致BIG文件的情况下的问题。

是否有任何有效的方法来实现这一目标?

回答

0

你在假设中是正确的。第二种选择简单地取消了应用程序的分布式方面,所以它不可伸缩。对于订单问题,由于概念是异步的,当数据驻留在不同的节点中时,我们无法跟踪订单。你可以做的是一些预处理,可以取消订单。意思是合并直到行顺序无关紧要的行,然后才分发文件。除非你能够对文件结构做出假设,比如属于同一行的行数,否则我会选择上述内容。