Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 不使用操作从ApacheSpark保存S3文件_Amazon S3_Mapreduce_Apache Spark - Fatal编程技术网

Amazon s3 不使用操作从ApacheSpark保存S3文件

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

在学习Spark时,基本工作流似乎是转换->操作,并将操作作为最终结果

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

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的惰性评估