gpt4 book ai didi

distinct - 使用 Apache Spark 进行高效计数

转载 作者:行者123 更新时间:2023-12-02 00:14:53 27 4
gpt4 key购买 nike

1 亿客户在几个网站(假设有 100 个网站)的页面上点击了 1000 亿次。您可以在大型数据集中获取点击流。

使用 Apache Spark 的抽象,计算每个网站的不同访问者的最有效方法是什么?

最佳答案

visitors.distinct().count() 是显而易见的方法,使用第一种方法,您可以指定并行级别,并且还可以看到速度的提高。如果可以将访客设置为流并使用 D 流,则可以实时进行计数。您可以直接从目录进行流式传输,并使用与 RDD 上相同的方法,例如:

val file = ssc.textFileStream("...")
file.distinct().count()

最后一个选项是使用 def countApproxDistinct(relativeSD: Double = 0.05): Long,但这被标记为实验性的,但如果 relativeSD (标准偏差)更高。

编辑:由于您希望每个网站的计数可以在网站 ID 上减少,因此可以有效地完成此操作(使用组合器),因为计数是聚合的。如果您有网站名称用户 ID 元组的 RDD,您可以这样做。visitors.countDistinctByKey()visitors.countApproxDistinctByKey(),这个近似值又是实验性的。要使用大约不同的键,您需要 PairRDD

有趣的旁注,如果您接受近似值并想要快速获得结果,您可能需要查看 blinkDB由与 Spark amp 实验室相同的人制造。

关于distinct - 使用 Apache Spark 进行高效计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24312113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com