大RDD与多个小RDD

时间:2014-12-08 12:01:32

标签: apache-spark partitioning rdd

历史数据:

  1. 每个活动都有多个表,其中包含一些历史信息,如GRP和CPP
  2. 我有多个维度,为每个活动定义GRP和CPP Dimensions- Geography,TimePeriod,Primary_Message
  3. 每个活动可能包含这些维度的子集
  4. 示例

     Activity1 {Geography, TimePeriod, GRP, CPP}
    
     Activity2 {TimePeriod, GRP, CPP}
    
     Activity3 {Primary_Message, TimePeriod, GRP, CPP}
    

    使用案例

    1. 有时我想查看不同时段的数据(这个 所有活动的维度都适用于所有活动

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

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

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

      我有两个选择 -

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

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

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

        TIA!

1 个答案:

答案 0 :(得分:0)

单个RDD的优点是添加另一种活动类型(活动4)几乎没有用。单独RDD的优点是,当您只想访问一种活动类型时,您不必浏览其他类型的数据。

正如你在评论中所说:

  

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

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