我有一个数据框,格式如下:
id | product
-------------
1 | A
1 | B
1 | C
2 | A
3 | A
3 | C
我想完成的是一个 2 列数据框输出,其中每个 ID 有一行,该 ID 拥有的每个产品都有一个数组。我尝试了一些使用 mapPartitions() 的代码,但我收到关于无法推断架构的错误。我知道我必须在地图函数中产生一些东西,但我似乎无法弄清楚。
使用 Spark 1.6
编辑
如果其他人有这个问题,我实际上在这里使用 combineByKey() 使用解决方案:https://stackoverflow.com/a/27043562/1181412
它为以更精细的方式工作提供了更大的灵活性
有点笨拙,但有效
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()