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()