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() 的等价物是啥?

PySpark AND EXISTS 等价于 sql 查询

在 Pyspark HiveContext 中,SQL OFFSET 的等价物是啥?

pyspark 查询的 SQL 等价物

PySpark 中的 mkString 等价物是啥?

要求失败:OneHotEncoderModel 预期输入列标签的 x 分类值,但输入列具有指定 n 值的元数据