jee*_*etu 3 dataframe apache-spark apache-spark-sql pyspark pyspark-sql
我是 pyspark 的新手
我有一个看起来像的数据集(只是几列的快照)

我想按键对我的数据进行分组。我的钥匙是
CONCAT(a.div_nbr,a.cust_nbr)
Run Code Online (Sandbox Code Playgroud)
我的最终目标是将数据转换成JSON,格式如下
k1[{v1,v2,....},{v1,v2,....}], k2[{v1,v2,....},{v1,v2,....}],....
Run Code Online (Sandbox Code Playgroud)
例如
248138339 [{ PRECIMA_ID:SCP 00248 0000138339, PROD_NBR:5553505, PROD_DESC:Shot and a Beer Battered Onion Rings (5553505 and 9285840) , PROD_BRND:Molly's Kitchen,PACK_SIZE:4/2.5 LB, QTY_UOM:CA } ,
{ PRECIMA_ID:SCP 00248 0000138339 , PROD_NBR:6659079 , PROD_DESC:Beef Chuck Short Rib Slices, PROD_BRND:Stockyards , PACK_SIZE:12 LBA , QTY_UOM:CA} ,{...,...,} ],
Run Code Online (Sandbox Code Playgroud)
1384611034793[{},{},{}],....
我创建了一个数据框(我基本上加入了两个表以获得更多字段)
joinstmt = sqlContext.sql(
"SELECT a.precima_id , CONCAT(a.div_nbr,a.cust_nbr) as
key,a.prod_nbr , a.prod_desc,a.prod_brnd , a.pack_size , a.qty_uom , a.sales_opp , a.prc_guidance , a.pim_mrch_ctgry_desc , a.pim_mrch_ctgry_id , b.start_date,b.end_date
Run Code Online (Sandbox Code Playgroud)
FROM scoop_dtl a join scoop_hdr b on (a.precima_id =b.precima_id)")
现在,为了获得上述结果,我需要根据键对结果进行分组,我执行了以下操作
groupbydf = joinstmt.groupBy("key")
Run Code Online (Sandbox Code Playgroud)
这导致 intp 分组数据,阅读后我知道我不能直接使用它,我需要将它转换回数据帧来存储它。
我是新手,需要一些帮助才能将其转换回数据帧,或者如果还有其他方法,我将不胜感激。
如果您加入的数据框如下所示:
gender age
M 5
F 50
M 10
M 10
F 10
Run Code Online (Sandbox Code Playgroud)
然后您可以使用下面的代码来获得所需的输出
joinedDF.groupBy("gender") \
.agg(collect_list("age").alias("ages")) \
.write.json("jsonOutput.txt")
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
{"gender":"F","ages":[50,10]}
{"gender":"M","ages":[5,10,10]}
Run Code Online (Sandbox Code Playgroud)
如果您有多个列,如姓名、薪水。您可以添加如下列:
df.groupBy("gender")
.agg(collect_list("age").alias("ages"),collect_list("name").alias("names"))
Run Code Online (Sandbox Code Playgroud)
您的输出将如下所示:
{"gender":"F","ages":[50,10],"names":["ankit","abhay"]}
{"gender":"M","ages":[5,10,10],"names":["snchit","mohit","rohit"]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3407 次 |
| 最近记录: |