小编Arj*_*jit的帖子

如何更新RDD?

我们正在开发Spark框架,其中我们将历史数据移动到RDD集合中.

基本上,RDD是我们进行操作的不可变的只读数据集.基于此,我们已将历史数据移至RDD,并在此类RDD上进行过滤/映射等计算.

现在有一个用例,RDD中的数据子集得到更新,我们必须重新计算这些值.

HistoricalData采用RDD的形式.我根据请求范围创建另一个RDD,并在ScopeCollection中保存该RDD的引用

到目前为止,我已经能够想到以下方法 -

方法1:广播变化:

  1. 对于每个更改请求,我的服务器获取特定于范围的RDD并生成作业
  2. 在工作中,在该RDD上应用地图阶段 -

    2.a. 对于RDD中的每个节点,在广播上进行查找并创建一个现在更新的新值,从而创建一个新的RDD
    2.b. 现在我在step2.a上再次对这个新的RDD进行所有计算.像乘法,减少等
    2.c. 我将此RDDs引用保存在我的ScopeCollection中

方法2:为更新创建RDD

  1. 对于每个更改请求,我的服务器获取特定于范围的RDD并生成作业
  2. 在每个RDD上,使用具有更改的新RDD进行连接
  3. 现在我在步骤2中再次对这个新的RDD进行所有计算,如乘法,减少等

方法3:

我曾想过创建流RDD,我不断更新相同的RDD并进行重新计算.但据我所知,它可以从Flume或Kafka获取流.而在我的情况下,值是基于用户交互在应用程序本身中生成的.因此,我无法在上下文中看到流RDD的任何集成点.

关于哪种方法更好或任何其他适合此方案的方法的任何建议.

TIA!

apache-spark spark-streaming rdd

19
推荐指数
1
解决办法
5260
查看次数

标签 统计

apache-spark ×1

rdd ×1

spark-streaming ×1