Apache spark 大RDD与多个小RDD
历史数据:Apache spark 大RDD与多个小RDD,apache-spark,partitioning,rdd,Apache Spark,Partitioning,Rdd,历史数据: 每个活动都有多个表,其中包含一些历史信息,如GRP和CPP 我有多个维度,每个活动都定义了GRP和CPP 维度-地理位置、时间段、主消息 每个活动可能包含这些维度的子集 示例 Activity1 {Geography, TimePeriod, GRP, CPP} Activity2 {TimePeriod, GRP, CPP} Activity3 {Primary_Message, TimePeriod, GRP, CPP} 用例: 有时,我希望跨时间段查看数据(此 维度
维度-地理位置、时间段、主消息
Activity1 {Geography, TimePeriod, GRP, CPP}
Activity2 {TimePeriod, GRP, CPP}
Activity3 {Primary_Message, TimePeriod, GRP, CPP}
用例:
对于每个作业,我将访问特定的RDD并计算
对于每个作业,我将访问单个大型RDD,并对该RDD执行活动筛选,并进行计算
蒂亚 单个RDD的优点是添加另一个活动类型(活动4)几乎不需要什么工作。单独的RDD的优点是,当您只想访问一种活动类型时,不必遍历其他类型的数据 正如你在评论中所说:
在UI上,将显示所有活动的数据。为了实现这一点,我们将运行多个作业(每个活动一个作业),并跨时间段计算它们的值
如果您有N个活动类型和M个总记录,那么如果您有单独的RDD,您将通过M个记录来呈现UI。如果您有一个RDD,您将查看N×M记录。“有时我想查看所有活动的跨时段数据”与“每个作业将满足一个单一活动”。这不是矛盾吗?在UI上,将显示所有活动的数据。为了实现这一点,我们将运行多个作业(每个活动一个作业)并跨时间段计算它们的值?什么不起作用?还是应该做得更好?这些用例足够简单,可以快速原型化和比较实现。Spark shell是您的朋友:我想设计讨论不太适合堆栈溢出。我们永远不会有完整的上下文,也永远无法为您运行基准测试。但在这种情况下,我认为答案是非常明确的,所以我添加了它。(我认为单独的RDD无疑会更有效。)感谢Daniel Darabos验证了多个RDD比使用一个大的RDD更好。因为在运行时添加活动非常罕见,所以在这种情况下多个RDD是正确的选择。谢谢