【发布时间】:2015-09-13 09:22:42
【问题描述】:
为了清楚起见,我不是从像这样的数组/列表中寻找 RDD
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); // sample
JavaRDD<Integer> rdd = new JavaSparkContext().parallelize(list);
如何在不完全缓冲内存的情况下从 java 迭代器创建 spark RDD?
Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4).iterator(); //sample iterator for illustration
JavaRDD<Integer> rdd = new JavaSparkContext().what("?", iterator); //the Question
补充问题:
是否需要源可重新读取(或能够多次读取)才能为 RDD 提供弹性?换句话说,既然迭代器本质上是只读的,那么是否有可能从迭代器创建弹性分布式数据集(RDD)?
【问题讨论】:
-
" 没有在内存中完全缓冲" .?你的 Iterator 不是已经在内存中了吗?
-
数据无论如何都会被加载到内存中。但在我看来,您可以使用 Spark Streaming 来读取输入,因为您的只读一次迭代器可能被视为数据流。
-
@KcDoD 没有。此问题中使用的用于说明。
标签: apache-spark spark-streaming