PySpark 中分类值的等价 groupyby().unique()
Posted
技术标签:
【中文标题】PySpark 中分类值的等价 groupyby().unique()【英文标题】:equivalence groupyby().unique() for categorical values in PySpark 【发布时间】:2017-07-18 13:23:31 【问题描述】:我的数据如下。 It has three attributes: location, date, and student_id.
在 Pandas 中,我可以做到
groupby(['location','date'])['student_id'].unique()
查看每个地点,在不同的日期,哪些学生同时去那里学习。
我的问题是如何在 PySpark 中执行相同的 groupby 以提取相同的信息?谢谢。
【问题讨论】:
【参考方案1】:你可以在 pyspark 中使用 collect_set 来完成它,
df.groupby('location','date').agg(F.collect_set('student_id')).show()
+--------+----------+-----------------------+
|location| date|collect_set(student_id)|
+--------+----------+-----------------------+
| 18250|2015-01-04| [347416]|
| 18253|2015-01-02| [167633, 188734]|
| 18250|2015-01-03| [363796]|
+--------+----------+-----------------------+
【讨论】:
【参考方案2】:假设您的数据在表单中有行:
(location, date, student_id)
你可以这样做:
data
.map(lambda row: (row[0:2], row[2])
.reduceByKey(lambda a, b: a.union(b))
.collect()
【讨论】:
以上是关于PySpark 中分类值的等价 groupyby().unique()的主要内容,如果未能解决你的问题,请参考以下文章
PySpark 中 pandas.cut() 的等价物是啥?