Size: a a a

2020 August 31

ИК

Иван Калининский... in Data Engineers
Жмака
Юнион вроде тяжелая операция
fileList.grouped(128).par.map(spark.read.parquet).reduce(_ union _) - может с этого стоит начать попытки?
источник

Ж

Жмака in Data Engineers
Иван Калининский
fileList.grouped(128).par.map(spark.read.parquet).reduce(_ union _) - может с этого стоит начать попытки?
А что за par? Не находит
источник

ИК

Иван Калининский... in Data Engineers
это потому что я планировал, что .grouped будет параллельная коллекция, а это, походу, итератор, надо его .toList
источник

ИК

Иван Калининский... in Data Engineers
Жмака
А что за par? Не находит
минутку, надо попробовать не в телеграмме это написать))
источник

Ж

Жмака in Data Engineers
Я пробую. Выдал с toList датафрейм.
источник

ИК

Иван Калининский... in Data Engineers
Жмака
Я пробую. Выдал с toList датафрейм.
ну вот, может быть, будет чуть быстрее))
источник

Ж

Жмака in Data Engineers
Попробую тогда. Но чуть чуть не обнадеживает😞
источник

Ж

Жмака in Data Engineers
Спасибо
источник

ИК

Иван Калининский... in Data Engineers
Жмака
Спасибо
пожалуйста!
источник

ИК

Иван Калининский... in Data Engineers
Пруф, что проблема большого числа union в dataframe API обсуждали в Moscow spark.
источник

ИК

Иван Калининский... in Data Engineers
И даже если делать union на отдельных строках, если их больше тысячи, ждать бесполезно, проще .collect и преобразовать на драйвере как надо. Походу, там квадратичная сложность и на каждом шаге проверяются схемы всех предыдущих датафреймов. Впрочем, код я так и не посмотрел, так что это всего лишь предположение
источник

AS

Andrey Smirnov in Data Engineers
Жмака
В количество данных и последовательное чтение файлов
а пробовал читать с указанием схемы, в орках это точно поможет, как в паркете не знаю
источник

Ж

Жмака in Data Engineers
Иван Калининский
И даже если делать union на отдельных строках, если их больше тысячи, ждать бесполезно, проще .collect и преобразовать на драйвере как надо. Походу, там квадратичная сложность и на каждом шаге проверяются схемы всех предыдущих датафреймов. Впрочем, код я так и не посмотрел, так что это всего лишь предположение
То есть юнион не решение и трогать его в моем случае нет смысла если у меня 25000 файлов?
источник

Ж

Жмака in Data Engineers
Andrey Smirnov
а пробовал читать с указанием схемы, в орках это точно поможет, как в паркете не знаю
Не пробовал но читать будет все равно последовательно тысячи файлов
источник

ИК

Иван Калининский... in Data Engineers
так я предложил сделать параллельный список списков, при этом количество юнионов снизится в 128 раз ))
источник

AS

Andrey Smirnov in Data Engineers
Жмака
Не пробовал но читать будет все равно последовательно тысячи файлов
он же не весь файл вычитывает, потом это разойдется по экзекютерам
источник

AS

Andrey Smirnov in Data Engineers
Иван Калининский
так я предложил сделать параллельный список списков, при этом количество юнионов снизится в 128 раз ))
но это все на драйвере будет выполняться?
источник

ИК

Иван Калининский... in Data Engineers
Andrey Smirnov
но это все на драйвере будет выполняться?
нет, на драйвере это будет координироваться, выполняться чтение должно на экзекуторах
источник

ИК

Иван Калининский... in Data Engineers
ну и небольшой дисклеймер, я на S3 ничего не делал, только HDFS и локальная ФС
источник

Ж

Жмака in Data Engineers
Иван Калининский
так я предложил сделать параллельный список списков, при этом количество юнионов снизится в 128 раз ))
Не компилируется.
источник