-1

历史数据:

  1. 每个活动我有多个表,其中包含一些历史信息,例如 GRP 和 CPP
  2. 我有多个维度,为每个活动定义了 GRP 和 CPP
    维度 - 地理、时间周期、主消息
  3. 每个活动可能包含这些维度的子集

例子

 Activity1 {Geography, TimePeriod, GRP, CPP}

 Activity2 {TimePeriod, GRP, CPP}

 Activity3 {Primary_Message, TimePeriod, GRP, CPP}

用例:

  1. 有时我想查看所有活动的跨时间段的数据(此维度适用于所有活动)

  2. 有时我想查看跨地区的数据(这个维度存在于一些活动中)

我必须设计 RDD,以便我的所有用例都能有效地工作。

在任何给定的时间点,每项工作都将迎合一个单一的活动。

我有两个选择——

  1. 为每个活动创建一个 RDD,并在该表中跨维度对其进行分区。因此,我将拥有与活动一样多的 RDD。
    对于每项工作,我将访问特定的 RDD 并计算

  2. 为所有活动创建一个 RDD 并在某个维度上对其进行分区
    对于每个作业,我将访问单个大 RDD 并对该 RDD 执行过滤以进行活动并进行计算

我的问题是哪个选项在给定用例和假设的情况下设计 RDD 更有效。

蒂亚!

4

1 回答 1

0

单个 RDD 的优点是添加另一种活动类型(活动 4)将是很少的工作。单独的 RDD 的优点是,当您只想访问一种活动类型时,您不必遍历其他类型的数据。

正如你在评论中所说:

在 UI 上,将显示所有活动的数据。为了实现这一点,我们将运行多个作业(每个活动一个作业)并跨时间段计算它们的值。

如果您有 N 个活动类型和 M 个总记录,如果您有单独的 RDD,您将通过 M 个记录来呈现 UI。如果您有一个 RDD,您将遍历 N×M 记录。

于 2014-12-09T09:16:51.690 回答