Pyspark 按分区创建嵌套字段



我有一个数据框,格式如下:

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()

相关内容

  • 没有找到相关文章

最新更新