【问题标题】:how count in pyspark? [closed]在pyspark中如何计算? [关闭]
【发布时间】:2021-04-15 19:59:51
【问题描述】:

我有一个巨大的标题列表。我想计算整个数据集中的每个标题。例如:

`title`

   A
   b
   A
   c
   c
   c

输出:

 title fre
     A   2
     b   1
     c   3

【问题讨论】:

    标签: hadoop pyspark count


    【解决方案1】:

    你可以这样做

     import pandas as pd
     title=["A","b","A","c","c","c"]
     pd.Series(title).value_counts()
    

    【讨论】:

    • 与大数据有关。 pyspark 不是熊猫
    • 我们可以通过reduce map来做到这一点吗?我认为应该更快
    【解决方案2】:

    你可以只groupBytitle然后count

    import pyspark.sql.functions as f
    df.groupBy('title').agg(f.count('*').alias('count')).show()
    +-----+-----+
    |title|count|
    +-----+-----+
    |    A|    2|
    |    c|    3|
    |    b|    1|
    +-----+-----+
    

    或者更简洁:

    df.groupBy('title').count().show()
    
    +-----+-----+
    |title|count|
    +-----+-----+
    |    A|    2|
    |    c|    3|
    |    b|    1|
    +-----+-----+
    

    【讨论】:

    • 需要很长时间吗?如果我想查看最多和最少的频率呢?
    • 由于我的数据集非常庞大(10 gig 数百万行),我正在寻找更快的方法
    • 如果你只是想探索和检查,你可以先.orderBy('count'),然后.head(n)最不频繁,.tail(n)最频繁。
    • 我不知道你能不能做得比这更快。因为您需要计数,所以您总是需要遍历整个数据集。
    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    相关资源
    最近更新 更多