approx_count_distinct(col, rsd)
Описание
Функция approx_count_distinct()
возвращает приблизительное количество уникальных значений в столбце. Это более эффективная альтернатива count(distinct)
, особенно для больших наборов данных.
Параметры
col
: Column - столбец, для которого нужно подсчитать уникальные значенияrsd
: float (опционально) - максимальная относительная стандартная ошибка (по умолчанию 0.05)
Возвращаемое значение
Column - приблизительное количество уникальных значений
Пример использования
from pyspark.sql import SparkSession
from pyspark.sql.functions import approx_count_distinct
# Создаем SparkSession
spark = SparkSession.builder.appName("approx_count_distinct_example").getOrCreate()
# Создаем DataFrame с данными
data = [(1,), (2,), (3,), (1,), (2,), (4,), (5,)]
df = spark.createDataFrame(data, ["value"])
# Подсчитываем приблизительное количество уникальных значений
result = df.select(
approx_count_distinct("value").alias("approx_distinct_count"),
approx_count_distinct("value", 0.01).alias("more_precise_count")
)
result.show()
# Результат:
# +-------------------+-------------------+
# |approx_distinct_count|more_precise_count|
# +-------------------+-------------------+
# | 5| 5|
# +-------------------+-------------------+
Примечания
- Использует алгоритм HyperLogLog для приблизительного подсчета
- Чем меньше значение rsd, тем точнее результат, но больше потребление памяти
- Полезно для:
- Больших наборов данных
- Приблизительной аналитики
- Оптимизации производительности
- Связанные функции:
count()
- точный подсчетcount_distinct()
- точный подсчет уникальных значений