Skip to content

hll_union(sketch1, sketch2)

Описание

Функция hll_union() объединяет два HyperLogLog эскиза в один.

Параметры

  • sketch1: Column - первый HLL эскиз
  • sketch2: Column - второй HLL эскиз

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

Binary - объединенный HLL эскиз

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

from pyspark.sql.functions import hll_union, hll_sketch_agg, hll_sketch_estimate
from pyspark.sql import SparkSession

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

# Создаем DataFrame с данными
data = [
    (1, "group1"), (2, "group1"), (3, "group1"),
    (4, "group2"), (5, "group2"), (6, "group2")
]
df = spark.createDataFrame(data, ["number", "group"])

# Создаем HLL эскизы для каждой группы
group_sketches = df.groupBy("group").agg(
    hll_sketch_agg("number").alias("sketch")
).collect()

# Объединяем эскизы и оцениваем количество уникальных элементов
sketch1 = group_sketches[0]["sketch"]
sketch2 = group_sketches[1]["sketch"]
result = spark.createDataFrame([(sketch1, sketch2)], ["sketch1", "sketch2"]) \
    .select(hll_sketch_estimate(hll_union("sketch1", "sketch2")).alias("total_unique")) \
    .show()

# Результат:
# +-------------+
# |total_unique |
# +-------------+
# |6            |
# +-------------+

Примечания

  • NULL значения в эскизах возвращают NULL
  • Объединенный эскиз содержит информацию о всех уникальных элементах
  • Для оценки количества уникальных элементов используйте hll_sketch_estimate()
  • Точность оценки зависит от размера эскизов