首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有一个嵌套结构与reduceByKey (电火花)?

如何有一个嵌套结构与reduceByKey (电火花)?
EN

Stack Overflow用户
提问于 2019-11-19 07:47:37
回答 1查看 108关注 0票数 0

我正在处理一个数据集,我希望根据3个值进行分区,并将其写回S3。数据集如下-

customerId,productId,createDate

我想通过customerId然后productId然后createDate来划分这些数据。因此,当我将这些分区数据写入s3时,它应该具有以下结构-

代码语言:javascript
运行
复制
customerId=1
  productId='A1'
    createDate=2019-10
    createDate=2019-11
    createDate=2019-12
  productId='A2'
    createDate=2019-10
    createDate=2019-11
    createDate=2019-12

下面是我用来创建分区的代码。

代码语言:javascript
运行
复制
rdd = sc.textFile("data.json")  #sc is spark context
r1.map(lambda r: (r["customerId"], r["productId"],r["createDate"])).distinct().map(lambda r: (r[0], ([r[1]],[r[2]]))).reduceByKey(lambda a, b: (a[0] + b[0],a[1] + b[1])).collect()

[('1',(A1,A2,'2019-12','2019-11','2019-10','2019-12','2019-11',‘2019-10’)]

这段代码确实给了我一个平面结构,而不是我提到的嵌套结构。有没有可能改变我描述的方式。任何指针都具有很高的识别性。

EN

回答 1

Stack Overflow用户

发布于 2019-11-19 08:13:23

首先将JSON文件读入dataframe。

代码语言:javascript
运行
复制
import json
a=[json.dumps("/data.json")]
jsonRDD = sc.parallelize(a)
df = spark.read.json(jsonRDD)

然后使用groupbycollectlist获得所需的格式。

代码语言:javascript
运行
复制
import pyspark.sql.functions as func
df.groupby('customerId','productId').agg(func.collectList('createDate')).collect()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58928981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档