小编Dru*_*rBg的帖子

Spark执行器上的对象缓存

Spark专家的一个好问题.

我正在处理map操作(RDD)中的数据.在mapper函数中,我需要查找类的对象A以用于处理RDD中的元素.

由于这将在执行程序上执行,并且类型元素A(将被查找)的创建恰好是一项昂贵的操作,我想在每个执行程序上预加载和缓存这些对象.这样做的最佳方式是什么?

  • 一个想法是广播查找表,但类A不可序列化(无法控制其实现).

  • 另一个想法是将它们加载到单个对象中.但是,我想控制加载到查找表中的内容(例如,可能在不同的Spark作业上有不同的数据).

理想情况下,我想指定一次将在执行程序上加载的内容(包括Streaming的情况,以便查找表在批处理之间保留在内存中),通过驱动程序在启动期间可用的参数,数据得到处理.

是否有干净优雅的方式或无法实现?

scala apache-spark

14
推荐指数
1
解决办法
1779
查看次数

存储传入流数据的最佳方式是什么?

对于通过 Spark Streaming 处理的数据的长期存储(多次写入,少量读取),哪个更好的选择:Parquet、HBase 还是 Cassandra?或者是其他东西?有哪些权衡?

hbase cassandra apache-spark parquet spark-streaming

5
推荐指数
1
解决办法
2727
查看次数