【问题标题】:Saving S3 files from Apache Spark without using action从 Apache Spark 保存 S3 文件而不使用操作
【发布时间】:2014-06-26 06:19:54
【问题描述】:

在学习 Spark 的过程中,基本的工作流程似乎是转换 -> 动作,并将动作作为最终结果。

我有一个不同的工作流程,我对计算的最终结果不感兴趣,而是希望根据转换填充大量 Amazon S3 文件。 (想象一下进行大规模并行图像处理。)我想做这样的事情:

for each k,v:
   v_ = transform(v)
   make a new s3 file, with key = k, and contents = v_

【问题讨论】:

    标签: amazon-s3 mapreduce apache-spark


    【解决方案1】:

    除了其他答案之外,也许值得考虑 RDD.foreachPartition() 以及您可以一次处理一个完整分区的地方。这在推出数据需要大量设置成本的情况下非常有用。

    transformedRDD.foreachPartition { iteratorOfRecords => 
        setup()    // do some initial connection setup, etc.
        iteratorOfRecords.foreach { keyValue => saveHoweverYouLike(keyValue) }
    }
    

    另一个需要注意的小点。从技术上讲, foreach() 也是一个“动作”,即使它不返回结果。而且你必须做一个动作来强制 Spark 启动 RDD 的惰性求值。

    【讨论】:

      【解决方案2】:

      似乎最好的方法是简单地编写一个自定义保存方法并执行transform.foreach(x => saveHoweverYouLike(x))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多