【发布时间】:2018-05-27 06:36:26
【问题描述】:
如何使用 PySpark 根据 id 将多行合并为单个单元格?我有一个带有 ID 和产品的数据框。首先我想将具有相同 id 的产品合并到一个列表中,然后我想计算每个唯一列表的出现次数。
输入示例1:
id,product
1,HOME
1,mobile
2,watch
2,mobile
3,HOME
3,mobile
4,cd
4,music
4,video
输出:
product,count
HOME-mobile,2
mobile-watch,1
cd-music-video,1
带有sql代码的示例2:
输入示例:
cloths,brad
cloths,edu
cloths,keith
cloths,stef
enter,andr
enter,char
enter,danny
enter,lucas
代码:
SELECT
SS.SEC_NAME,
STUFF((SELECT '- ' + US.USR_NAME
FROM USRS US
WHERE US.SEC_ID = SS.SEC_ID
ORDER BY USR_NAME
FOR XML PATH('')), 1, 1, '') [SECTORS/USERS]
FROM SALES_SECTORS SS
GROUP BY SS.SEC_ID, SS.SEC_NAME
ORDER BY 1
输出:
cloths,brad-edu-keith-stef
enter,andr-char-danny-lucas
在这个例子中,输出没有计数,但应该包括在内。
我想在 PySpark 而不是 sql/pig 中解决这个问题。
【问题讨论】:
-
这是一个简单的 pyspark 用例。告诉我们你尝试了什么??
-
ia m new in pyspark 我已经尝试使用 pig 我不知道如何使用 pyspark 所以我需要帮助 group_url = GROUP logdata by (url); X = FOREACH group_url { unique_users = DISTINCT logdata.name; GENERATE FLATTEN(group), COUNT(unique_users) AS UniqueUsers,unique_users as name, COUNT(logdata) as counts;} STORE X INTO 'output/bigdata_analytics_cleaned';
-
@kumar:请使用编辑功能并将代码添加到问题本身,而不是在评论中。此外,您在此处粘贴的代码似乎不包含与问题中相同的列名,并且似乎还做了其他事情。
-
@kumar:根据您的说法,我尝试在问题中添加更多描述,请检查是否正确。我还添加了一个答案,希望对您有所帮助。
标签: python apache-spark dataframe pyspark