【问题标题】:value count in pyspark is taking too much timepyspark 中的值计数花费了太多时间
【发布时间】:2018-05-07 18:12:55
【问题描述】:

Spark 在 4 秒内读取十亿个数据集非常有效,但 df 中不同值的计数非常慢且效率较低,即使对于一小部分数据也需要 5 分钟以上,我有尝试了这些方法:

value1 = df.where(df['values'] == '1').count()

df.groupBy("values").count().orderBy("value_count").show()

两者都返回正确的结果,但时间是关键。 我知道 count 是一个惰性运算符,但有没有其他方法可以解决这个问题?

TIA

【问题讨论】:

  • 这应该更快:df.where("values = 1").count()

标签: pyspark pyspark-sql


【解决方案1】:

Count() 是一个让 Spark 逐行计数的函数。由于这些操作的性质,count()distinct() 等操作显然需要时间,建议不要在分布式环境中使用。

Spark 具有不支持索引的数据结构,因此count() 将几乎完全搜索数据。

【讨论】:

  • 我明白了!有什么我可以做的吗
  • 你无法避免这个问题。 @sanchaz
  • 好的,我明白了! ◕︵◕
  • @sanchaz 我知道你来自哪里......但我们无能为力。您可以通过启用箭头来尝试矢量化操作,但我没有尝试过。
  • 我应该将 csv 文件转换为 libsvm 格式吗?如果这样有效
猜你喜欢
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 2017-02-15
  • 2020-07-23
  • 2013-07-11
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多