Amazon s3 不使用操作从ApacheSpark保存S3文件
在学习Spark时,基本工作流似乎是转换->操作,并将操作作为最终结果 我有一个不同的工作流,在这个工作流中,我对计算的最终结果不感兴趣,而是希望基于转换填充大量AmazonS3文件。(想象一下进行大规模并行图像处理。)我想这样做:Amazon s3 不使用操作从ApacheSpark保存S3文件,amazon-s3,mapreduce,apache-spark,Amazon S3,Mapreduce,Apache Spark,在学习Spark时,基本工作流似乎是转换->操作,并将操作作为最终结果 我有一个不同的工作流,在这个工作流中,我对计算的最终结果不感兴趣,而是希望基于转换填充大量AmazonS3文件。(想象一下进行大规模并行图像处理。)我想这样做: for each k,v: v_ = transform(v) make a new s3 file, with key = k, and contents = v_ 似乎最好的方法是简单地编写一个自定义保存方法并进行transform.foreach
for each k,v:
v_ = transform(v)
make a new s3 file, with key = k, and contents = v_
似乎最好的方法是简单地编写一个自定义保存方法并进行
transform.foreach(x=>saveHoweverYouLike(x))
似乎最好的方法是简单地编写一个自定义保存方法并进行transform.foreach(x=>saveHoweverYouLike(x))
最好的方法似乎是简单地编写一个自定义保存方法并进行转换。foreach(x=>saveHoweverYouLike(x))
最好的方法似乎是简单地编写一个自定义保存方法并进行转换。foreach(x=>saveHoweverYouLike(x))
除了其他答案,也许值得考虑RDD.foreachPartition(),您可以一次处理一个完整的分区。这在将数据推出需要大量设置成本的情况下是有益的
transformedRDD.foreachPartition { iteratorOfRecords =>
setup() // do some initial connection setup, etc.
iteratorOfRecords.foreach { keyValue => saveHoweverYouLike(keyValue) }
}
另一个需要注意的小问题。从技术上讲,foreach()也是一个“操作”,即使它不返回结果。您必须执行一个操作来强制Spark启动RDD的惰性评估。除了另一个答案之外,还应该考虑RDD.foreachPartition(),在这里您可以一次处理一个完整的分区。这在将数据推出需要大量设置成本的情况下是有益的
transformedRDD.foreachPartition { iteratorOfRecords =>
setup() // do some initial connection setup, etc.
iteratorOfRecords.foreach { keyValue => saveHoweverYouLike(keyValue) }
}
另一个需要注意的小问题。从技术上讲,foreach()也是一个“操作”,即使它不返回结果。您必须执行一个操作来强制Spark启动RDD的惰性评估。除了另一个答案之外,还应该考虑RDD.foreachPartition(),在这里您可以一次处理一个完整的分区。这在将数据推出需要大量设置成本的情况下是有益的
transformedRDD.foreachPartition { iteratorOfRecords =>
setup() // do some initial connection setup, etc.
iteratorOfRecords.foreach { keyValue => saveHoweverYouLike(keyValue) }
}
另一个需要注意的小问题。从技术上讲,foreach()也是一个“操作”,即使它不返回结果。您必须执行一个操作来强制Spark启动RDD的惰性评估。除了另一个答案之外,还应该考虑RDD.foreachPartition(),在这里您可以一次处理一个完整的分区。这在将数据推出需要大量设置成本的情况下是有益的
transformedRDD.foreachPartition { iteratorOfRecords =>
setup() // do some initial connection setup, etc.
iteratorOfRecords.foreach { keyValue => saveHoweverYouLike(keyValue) }
}
另一个需要注意的小问题。从技术上讲,foreach()也是一个“操作”,即使它不返回结果。您必须执行一个操作来强制Spark启动RDD的惰性评估