有人能分辨出 pyspark.sql.functions.approxCountDistinct (我知道这是不赞成的)和 pyspark.sql.functions.approx_count_distinct ? 我在一个项目中使用了这两个版本,并经历了不同的价值观
pyspark.sql.functions.approxCountDistinct
pyspark.sql.functions.approx_count_distinct
fv2wmkja1#
如你所说, pyspark.sql.functions.approxCountDistinct 已弃用。原因很可能只是风格问题。他们可能想把所有东西都放在蛇箱里。正如您在源代码中看到的 pyspark.sql.functions.approxCountDistinct 只是打电话而已 pyspark.sql.functions.approx_count_distinct ,除了给你一个警告。所以不管你用哪一个,最终都会运行相同的代码。而且,根据源代码, approx_count_distinct 基于hyperloglog++算法。我不是很熟悉的算法,但它是基于重复集合并。因此,结果很可能取决于合并执行者的各种结果的顺序。由于这对于spark来说是不确定的,所以这可以解释为什么你会看到不同的结果。
approx_count_distinct
1条答案
按热度按时间fv2wmkja1#
如你所说,
pyspark.sql.functions.approxCountDistinct
已弃用。原因很可能只是风格问题。他们可能想把所有东西都放在蛇箱里。正如您在源代码中看到的pyspark.sql.functions.approxCountDistinct
只是打电话而已pyspark.sql.functions.approx_count_distinct
,除了给你一个警告。所以不管你用哪一个,最终都会运行相同的代码。而且,根据源代码,
approx_count_distinct
基于hyperloglog++算法。我不是很熟悉的算法,但它是基于重复集合并。因此,结果很可能取决于合并执行者的各种结果的顺序。由于这对于spark来说是不确定的,所以这可以解释为什么你会看到不同的结果。