Skip to content

hll_sketch_agg(col[, lgConfigK])

Описание

Функция hll_sketch_agg() создает HyperLogLog (HLL) эскиз для приблизительного подсчета уникальных значений в столбце. Это агрегатная функция, которая должна использоваться с groupBy().

Параметры

  • col: Column - столбец для создания HLL эскиза
  • lgConfigK: Integer (опционально) - параметр точности, по умолчанию 12

Возвращаемое значение

Binary - бинарное представление HLL эскиза

Пример использования

from pyspark.sql.functions import hll_sketch_agg
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("hll_sketch_agg_example").getOrCreate()

# Создаем DataFrame
data = [
    ("A", 1),
    ("A", 2),
    ("A", 2),
    ("B", 3),
    ("B", 4),
    ("B", 4),
    ("B", 5)
]
df = spark.createDataFrame(data, ["group", "value"])

# Создаем HLL эскиз
result = df.groupBy("group").agg(
    hll_sketch_agg("value").alias("hll_sketch"),
    hll_sketch_agg("value", 10).alias("hll_sketch_low_precision")
).show(truncate=False)

# Результат:
# +-----+--------------------+---------------------------+
# |group|hll_sketch          |hll_sketch_low_precision   |
# +-----+--------------------+---------------------------+
# |A    |[B@1234567890...]   |[B@0987654321...]         |
# |B    |[B@2345678901...]   |[B@9876543210...]         |
# +-----+--------------------+---------------------------+

Примечания

  • HLL эскиз - это вероятностная структура данных для приблизительного подсчета уникальных значений
  • Параметр lgConfigK влияет на точность и размер эскиза (больше = точнее, но больше памяти)
  • Для объединения HLL эскизов используйте hll_union_agg()
  • Для точного подсчета уникальных значений используйте countDistinct()