【问题标题】:How to get a total count based on distinction of two columns with PySpark?如何使用 PySpark 根据两列的区别来获得总计数?
【发布时间】:2021-05-09 12:21:51
【问题描述】:

如何在 PySpark 中根据不同的 ID 和位置频率 进行求和

感觉我需要按 ID 和 Location 进行窗口分区,然后添加频率,但不知道如何在 Pyspark 代码中编写:

输入

ID Location Frequency
AAA Mcd 2
AAA Mcd 1
BBB Nandos 1
BBB Nandos 3
AAA KFC 2
BBB KFC 4

输出

ID Location Total Frequency
AAA Mcd 3
AAA KFC 2
BBB Nandos 4
BBB KFC 4

【问题讨论】:

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


    【解决方案1】:

    我认为你可以使用GroupBy 函数。

    yourInput.groupBy("ID",Location).sum("Frequency").alias("TotalFrequency").show(truncate=False)
    

    注意:请查看 pyspark Link of Aggregate Functions中的聚合函数链接

    【讨论】:

      【解决方案2】:

      只是一个简单的分组和求和:

      import pyspark.sql.functions as F
      
      df2 = df.groupBy('ID', 'Location').agg(F.sum('Frequency').alias('TotalFrequency'))
      

      【讨论】:

        【解决方案3】:

        首先将数据框制作成表,然后您可以从该表中查询,然后您可以使用普通查询

        dataframe.createOrReplaceTempView("mytable")
        
        "select id, location, sum(Frequency) from mytable
        group by id, location"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-06
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2018-04-01
          • 2021-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多