【发布时间】:2017-10-05 14:47:14
【问题描述】:
我正在使用 Spark 2.1.1 (pyspark),在大约 14 亿行的 DataFrame 上进行 groupby,然后进行 approx_count_distinct 聚合。 groupby 操作导致大约 600 万组要对其执行 approx_count_distinct 操作。组的预期不同计数范围从个位数到数百万不等。
这是我正在使用的代码 sn-p,“item_id”列包含项目 ID,“user_id”包含用户 ID。我想计算与每个项目关联的不同用户。
>>> distinct_counts_df = data_df.groupby(['item_id']).agg(approx_count_distinct(data_df.user_id).alias('distinct_count'))
在生成的 DataFrame 中,我得到了大约 16,000 个计数为 0 的项目:
>>> distinct_counts_df.filter(distinct_counts_df.distinct_count == 0).count()
16032
当我检查其中一些项目的实际不同计数时,我得到了 20 到 60 之间的数字。这是 HLL 近似计数算法的准确性的已知问题还是一个错误?
【问题讨论】:
标签: apache-spark spark-dataframe