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 では、aは正常に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)))
于 2015-08-10T15:56:47.570 に答える