在RDD中存储数组的有效方法

时间:2015-08-10 12:42:16

标签: java hadoop apache-spark rdd apache-flink

我需要在RDD中存储类型数组。为此,我使用了Hadoop中的ArrayWritable类 :

RichFaces

它有效,但我想确保如果不需要对象将不会被序列化。我想尽可能地留在记忆中。 Spark和Flink声称将数据保存在内存中。 是否是ArrayWritable类的情况?这是存储阵列的有效方法吗? 谢谢!

来自@mattinbits的

编辑回答,对于 Spark ,有效的方法是使用 Java数组 ArrayList (用于动态调整大小)

1 个答案:

答案 0 :(得分:0)

在Spark中,java.util.ArrayList应该可以正常工作。我测试过的Scala中的一个例子:

import org.apache.spark.{SparkContext, SparkConf}
import java.util

case class Foo(val a: Int, val b: util.ArrayList[Int])

val conf = new SparkConf().setMaster("local").setAppName("example")
val sc = new SparkContext(conf)

val arr = new util.ArrayList[Int]()
arr.add(1)

val par = sc.parallelize[Foo](List(Foo(1, arr), Foo(2, arr), Foo(2, arr), Foo(3, arr), Foo(3, arr)))
相关问题