gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:10:49 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

在 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)))

关于java - 在 RDD 中存储数组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com