我有如下所示的主RDD
[(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 22'),
(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 22'),
(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 23'),
(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 24'),
(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 25'),
(u'Facebook', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 26'),
(u'Facebook', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 27'),
(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 28'),
(u'google', u'00e293fd-80df-47c2-8762-b96c0b5e71c5', 'week 29'),
(u'Facebook', u'0532e64a-7163-46a1-92ba-286b2a47bed5', 'week 30')]
我想根据第三列(按星期指数)将其拆分以进行同类群组分析。我想到的一种方法是根据周列将RDD转换为数据帧和分区,并将其保存在文本文件中,然后分别读取并相互比较。有什么更好的方法吗?
答案 0 :(得分:0)
当这是所有要使用的信息时,很难提供帮助,但是您始终可以创建数据框和do group by或按周汇总操作。并创建要比较的SQL查询。它将在您在注释中给出的示例中起作用。
答案 1 :(得分:0)
我将RDD转换为Dataframe,并通过以下代码按源保存到分区中
cohort_df = cohort.toDF(["source", "userId", "cohortId"])
cohort_df.write.partitionBy("source").csv("cohorts")
然后,我通过按如下所示的函数进行过滤,将RDD分为几周
def week24(row):
return "week24" == row[1]
week22_rdd, week23_rdd, week24_rdd, week25_rdd, week26_rdd = (cohortGroup_rdd.filter(f).map(lambda f: f[0]).distinct() for f in (week22, week23, week24, week25, week26))
,然后使用两个RDD的交集来比较两个RDD,并获得如下所示的通用ID:
new_rdd = week22_rdd.intersection(week23_rdd)
这是使我前进的最好选择。