Skip to content

hll_union_agg(col[, allowDifferentLgConfigK])

Описание

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

Параметры

  • col: Column - столбец с HLL эскизами для объединения
  • allowDifferentLgConfigK: Boolean (опционально) - разрешить объединение эскизов с разными параметрами точности, по умолчанию FALSE

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

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

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

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

# Создаем SparkSession
spark = SparkSession.builder.appName("hll_union_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")
).agg(
    hll_union_agg("hll_sketch").alias("union_sketch")
).show(truncate=False)

# Результат:
# +--------------------+
# |union_sketch        |
# +--------------------+
# |[B@1234567890...]   |
# +--------------------+

Примечания

  • Функция объединяет несколько HLL эскизов в один
  • По умолчанию нельзя объединять эскизы с разными параметрами точности
  • Для создания HLL эскиза используйте hll_sketch_agg()
  • Для точного подсчета уникальных значений используйте countDistinct()