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()
- Точность оценки зависит от размера эскизов