Spark在4秒内读取一组十亿数据集非常有效,但df中不同值的计数非常慢且效率较低。即使对于一小组数据,它也需要超过5分钟,我尝试过这些方法:
value1 = df.where(df['values'] == '1').count()
或
df.groupBy("values").count().orderBy("value_count").show()
两者都返回正确的结果,但时间是这里的本质。 我知道 count 是一个懒惰的运算符,但是有另一种方法可以解决这个问题吗?
TIA
答案 0 :(得分:0)
Count()
是一个使Spark逐字计数的函数。 count()
,distinct()
等操作显然需要时间,因为这些操作的性质,并建议在分布式环境中使用。
Spark的数据结构不支持索引,因此count()
几乎可以完全搜索数据。