Spark:如何序列化/反序列化java对象并将它们分布在节点

时间:2016-02-11 07:33:02

标签: java apache-spark

我在HDFS上保存了一些java对象,供各种火花作业使用。我知道对于本地文件系统,我们可以使用ObjectInputStream类反序列化。但到目前为止,我无法使用spark在远程文件系统(HDFS?)上找到任何方法。

更新:spark context有一个api:objectFile来获取一个对象。对象可以收集为: -

JavaRDD<Map<Long, BloomFilter>> obj = context.objectFile("/user/hdfs/path");
dat = obj.collect().get(0);

但现在我遇到了相关的问题。 dat对象将仅由节点填充以接收RDD。但是这些数据需要被spark中的所有节点使用。我知道有一个Broadcast函数,但这意味着将我的数据传送到所有节点,并且数据量非常大将无法实现map reduce的目的。有没有更好的方法在火花环境中反序列化和分发对象。

1 个答案:

答案 0 :(得分:0)

在Spark中,SparkContext通常用于以分布式方式读取数据,Spark应该为您处理反序列化。特别是方法objectFile看起来可能有所帮助。

解释在HDFS中编写文件here