一个有一些数据,看起来像这样FlatMap和的GroupBy在星火
from local_spark import sc,sqlContext
rdd = sc.parallelize([
("key1", 'starttime=10/01/2015', 'param1', '1,2,3,99,88'),
("key2", 'starttime=10/02/2015'', 'param1', '11,12'),
("key1", 'starttime=10/01/2015'', 'param2', '66,77')
])
第三个参数是一个逗号分隔(每秒一个值)值的列表,可以是非常巨大的
什么我需要做的是按键分组数据集,然后flapMap。 预期的结果会是这样的:
(key1) # rdd key
# for each key, a table with the values
key timestamp param1 param2
key1 10/01/2015 1 66
key1 10/01/2015 2 77
key1 10/01/2015 3 null
key1 10/01/2015 99 null
(key2) # rdd key
key timestamp param1 param2
key2 10/01/2015 11 null
key2 10/01/2015 12 null
到目前为止,我所试图做的是这样的: rdd.groupByKey()flatMap(functionToParseValuesAndTimeStamps)
如果我做了什么像这样,flatMap操作的结果是否仍然按键分组?我会“通过”手术来放松这个组吗?
obs:一个更幼稚的方法是首先使用flapMap,然后按键分组。但由于键值比键值要少得多,所以我认为这会导致性能不佳
源数据和结果之间的关系是什么?如何记录:''key1“,'starttime = 10/01/2015','param1','1,2,3,99,88''变成'key1 10/01/2015 1 66'? – maasg