我的数据框格式如下:
id | product
-------------
1 | A
1 | B
1 | C
2 | A
3 | A
3 | C
我想要完成的是一个2列数据帧输出,其中每个ID有一行,每个产品拥有一个数组。我用mapPartitions()尝试了一些代码,但是我得到了关于无法推断架构的错误。我知道我必须在地图功能中产生一些东西,但我似乎无法弄明白。
使用Spark 1.6
修改
如果其他人有这个问题,我实际上使用combineByKey()来解决这个问题: https://stackoverflow.com/a/27043562/1181412
它提供了更灵活的工作方式
答案 0 :(得分:0)
有点笨重,但有效
a = sqlContext.createDataFrame(sc.parallelize([
(1, 'A'), (1, 'B'), (1, 'C'),
(2, 'A'),
(3, 'A'), (3, 'C')]), ['id', 'product'])
sqlContext.createDataFrame(
a.rdd.reduceByKey(lambda x, y: x + ',' + y),
['id', 'products']).show()