我有很多物品的RDD,只需简化一下即可:
// vue.config.js
module.exports = {
configureWebpack: {
// config goes here
}
}
并将这些项目提交给批处理API([0,1,2,3,4,5,6,7,8,9]
)。但API限制了最大批量(实验3)。
因此,为了获得最佳性能,我需要将RDD迭代器尽可能地转换为limit数组:
API.post(a[])
然后我使用Spark Java将数据推送到API。
[[0,1,2], [3,4,5], [6,7,8], [9]]
我的问题是如何进行转换?
答案 0 :(得分:0)
要清楚,没有RDD迭代器,但每个分区都有一个迭代器。要访问它们,可以使用foreachPartition
,然后可以使用简单的旧Java迭代器ops进行批处理迭代器。这是使用Spark Java API http://spark.apache.org/docs/2.4.0/api/java/org/apache/spark/api/java/JavaRDD.html#foreachPartition-org.apache.spark.api.java.function.VoidFunction-和Guava的解决方案:
rdd.foreachPartition(it ->
Iterators.partition(it, batchSize)
.forEachRemaining(API::post));