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