【问题标题】:PySpark: GroupBy and count the sum of unique values for a columnPySpark:GroupBy并计算列的唯一值的总和
【发布时间】:2022-01-10 20:10:10
【问题描述】:

我有一个 device_id 的事件数据,它有时会成功,有时会失败。

device_id status
1 Successful
1 UnSuccessful
1 UnSuccessful
1 UnSuccessful
1 Successful
2 Successful
2 UnSuccessful
2 UnSuccessful

有没有办法进行分组并在单行中获取 Id 的结果,如下所示:

device_id success_count unsuccessful_count
1 2 3
2 1 2

我一直在尝试使用 group by 的几种方法,但我无法在单行中获取 device_id 的 success_count 和 unsuccessful_count。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    您需要按设备 ID 对数据进行分组,然后按状态和计数进行透视:

    df.groupBy("device_id").pivot("status").count()
    

    【讨论】:

    • 我不知何故得到 classCast 异常:Py4JJavaError:调用 o1604.showString 时发生错误。 : java.lang.ClassCastException: 类 org.apache.spark.sql.types.ArrayType 不能转换为类 org.apache.spark.sql.types.StructType (org.apache.spark.sql.types.ArrayType 和 org.apache.spark.sql.types.ArrayType) apache.spark.sql.types.StructType 在加载程序“app”的未命名模块中)...知道为什么会发生吗?
    • 我接受了答案,因为我看到的上述问题仅与我的用例有关,并且解决方案实际上符合我的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多