【问题标题】:Spark transformations and ordering火花转换和排序
【发布时间】:2016-06-09 09:05:22
【问题描述】:

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

  1. 使用 spark textFile 将文件读取到 RDD 并使用返回新 RDD 的 mapmapPartions 执行解析。
  2. 使用 sparks textFile 读取文件,使用 coalesce 减少到 1 个分区,并使用返回新 RDD 的 mapPartions 执行解析。

虽然我不关心实际数据的排序,但使用第一种方法我无法保持文件头、开始标签、数据头和结束标签的所需顺序。 后者对我有用,但我知道这不是有效的方法,并且在大文件的情况下可能会导致问题。

有没有什么有效的方法来实现这一点?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      相关资源
      最近更新 更多