【发布时间】:2015-04-15 17:52:25
【问题描述】:
有迹象表明 Spark 中的连接是使用 / 基于 cogroup 函数/primitive/transform 实现的。所以让我首先关注 cogroup - 它返回一个 RDD 的结果,它基本上由 cogrouped RDD 的所有元素组成。换一种说法——对于每个同组 RDD 中的每个键,至少有一个来自同组 RDD 中的至少一个的元素。
这意味着当更小,而且流式传输,例如JavaPairDstreamRDDs 不断加入更大的批处理 RDD,这将导致为结果(cogrouped)RDD 的多个实例分配 RAM,a.k.a 本质上是大批处理 RDD 等等...... 显然,当 DStream RDD 被丢弃并且它们定期这样做时,RAM 将被返回,但这似乎仍然是 RAM 消耗中不必要的峰值
我有两个问题:
是否有更“精确”控制 cogroup 过程的方法,例如告诉它只包含共组 RDD 元素,其中每个给定键的共组 RDD 的每个元素中至少有一个元素。根据当前的 cogroup API,这是不可能的
1234563仍然是同样严重的 RAM 消耗
【问题讨论】:
标签: apache-spark spark-streaming