Я новенький Pyspark (и действительно Python). Я пытаюсь рассчитывать разные по каждому столбцу (не разные комбинации столбцов) Я хочу ответ на этот оператор SQL:
sqlStatement = "Select Count(Distinct C1) AS C1, Count(Distinct C2) AS C2, ..., Count(Distinct CN) AS CN From myTable"
distinct_count = spark.sql(sqlStatement).collect()
Это занимает вечность (16 часов) в кластере из 8 узлов (см. Конфигурацию ниже). Я пытаюсь оптимизировать набор данных 100 ГБ с 400 столбцами. Я не вижу способа использования SQL-примитивов dataframe, таких как:
df.agg(countDistinct('C1', 'C2', ..., 'CN'))
, поскольку это снова даст мне уникальные комбинации. Должен быть способ сделать это быстро.
Мастер-узел
Стандарт (1 мастер, N рабочих)
Тип машины
n1-highmem-8 (8 ВЦП, 52,0 ГБ памяти)
Размер основного диска
500 ГБ
Рабочие узлы
8
Тип машины
n1-highmem-4 (4 vCPU, 26,0 ГБ памяти)
Размер основного диска
500 ГБ
Локальные SSD
1