1

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

static public class Record {
    public long id;
    public FloatArrayWritable dataArray;
}

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

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

4

1 回答 1

0

在 Spark 中, ajava.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)))
于 2015-08-10T15:56:47.570 回答