list - pysparkcollect_set或collect_list与groupby

标签 list group-by set pyspark collect

如何在 groupby 之后的数据帧上使用 collect_setcollect_list。例如:df.groupby('key').collect_set('values')。我收到错误:AttributeError:“GroupedData”对象没有属性“collect_set”

最佳答案

您需要使用 agg。示例:

from pyspark import SparkContext
from pyspark.sql import HiveContext
from pyspark.sql import functions as F

sc = SparkContext("local")

sqlContext = HiveContext(sc)

df = sqlContext.createDataFrame([
    ("a", None, None),
    ("a", "code1", None),
    ("a", "code2", "name2"),
], ["id", "code", "name"])

df.show()

+---+-----+-----+
| id| code| name|
+---+-----+-----+
|  a| null| null|
|  a|code1| null|
|  a|code2|name2|
+---+-----+-----+

请注意,在上面您必须创建一个 HiveContext。请参阅https://stackoverflow.com/a/35529093/690430用于处理不同的 Spark 版本。

(df
  .groupby("id")
  .agg(F.collect_set("code"),
       F.collect_list("name"))
  .show())

+---+-----------------+------------------+
| id|collect_set(code)|collect_list(name)|
+---+-----------------+------------------+
|  a|   [code1, code2]|           [name2]|
+---+-----------------+------------------+

关于list - pysparkcollect_set或collect_list与groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580782/

相关文章:

java - 在 Scala 中从 java.util.Set 构造一个 java.util.List

python - 如何从 'column' 快速获取 'matrix' ? (不一定是数字)

mysql - 显示每小时的聚合数据

java - 使用 Lists.partition 或 Iterable.partition 将集合拆分为子集

haskell - 为什么 IntSet 查找是 O(min(n,W)),而不是 O(1)?

sql-server - 加入具有多行的 2 个表

javascript - 循环遍历数组到div?

Python:如何读取列表格式的文件?

python - 使用字符串搜索字典列表并将其附加到相同格式的另一个列表中

javascript - 如何在 JavaScript 中为对象值添加标签