Size: a a a

2021 April 01

ЕГ

Евгений Глотов... in Moscow Spark
Иван Калининский
Понимаю, я к тому и вёл, что терадата не связана файловым форматом, поэтому там выгоднее делить помельче, не заботясь о размерах. Но мысль почему-то осталась в голове, а не в мессадже(
А, ну это да, когда весь диск можно по своему усмотрению разметить, это другой вопрос)
источник

ЕГ

Евгений Глотов... in Moscow Spark
Единственное, что меня не радует в спарк бакетах - то, что они ну вот вообще никак не читаются хайвом
источник

ЕГ

Евгений Глотов... in Moscow Spark
Так как при создании таблицы схема в хайве создаётся заведомо кривая
источник

NN

No Name in Moscow Spark
Евгений Глотов
Единственное, что меня не радует в спарк бакетах - то, что они ну вот вообще никак не читаются хайвом
Меня в бакетах не радует, что при регулярном аппенде данных нужно, получается, каждый раз брать всю табличку и ребакетировать, там же не получится, как с партициями, делать просто аппенд или оверрайт экзистинг. А если это древнее говно мамонта в терабайты весом, то получается больно и долго.
источник

ИК

Иван Калининский... in Moscow Spark
No Name
Меня в бакетах не радует, что при регулярном аппенде данных нужно, получается, каждый раз брать всю табличку и ребакетировать, там же не получится, как с партициями, делать просто аппенд или оверрайт экзистинг. А если это древнее говно мамонта в терабайты весом, то получается больно и долго.
Спарк допишет новые файлы с бакетАйди, при этом потеряет сортировку
источник

NN

No Name in Moscow Spark
Иван Калининский
Спарк допишет новые файлы с бакетАйди, при этом потеряет сортировку
В смысле? Каким образом он дописывает на лету?
источник

ПФ

Паша Финкельштейн... in Moscow Spark
https://blog.jetbrains.com/kotlin/2021/04/ki-the-next-interactive-shell-for-kotlin/
Мы ещё для котлинспарка и шелл с автодополнением и стюардессами сделали!
источник

ИК

Иван Калининский... in Moscow Spark
No Name
В смысле? Каким образом он дописывает на лету?
В одном бакете может содержаться много файлов. Спарк хранит bucketId в имени файла прямо перед расширением (там ещё номер записанного файла, но и бох с ним)). Можно докидать файлов в бакет (напоминаю, всё дело в имени файла) и потом читать его как одну большую секцию
источник

ИК

Иван Калининский... in Moscow Spark
Сортировка в пределах секции RDD в случае одного файла на бакет гарантируется, если больше одного файла хоть в одном бакете, то дело плохо, сортировка не обеспечена

Управлять размером файлов спарк не умеет и не собирается
источник

NN

No Name in Moscow Spark
Иван Калининский
В одном бакете может содержаться много файлов. Спарк хранит bucketId в имени файла прямо перед расширением (там ещё номер записанного файла, но и бох с ним)). Можно докидать файлов в бакет (напоминаю, всё дело в имени файла) и потом читать его как одну большую секцию
А стандартными средствами можно попросить спарк при аппенде данных их в уже готовый соответствующий бакет записать, или это костыль городить?
источник

ИК

Иван Калининский... in Moscow Spark
No Name
А стандартными средствами можно попросить спарк при аппенде данных их в уже готовый соответствующий бакет записать, или это костыль городить?
при указании такого же способа партиционирования и бакетирования, то есть, df.write.mode(SaveMode.Append).bucketBy(n,field,fields:_*).sortBy(field2,fields2:_*).saveAsTable(tableName) каждый раз будет записывать в одни и те же бакеты записи, которые дают одинаковый хеш по модулю n. Существующие файлы не будут изменены, потому что это в общем случае невозможно. Сколько бы строк ни было добавлено в бакет, будет создан минимум один новый файл в бакете
источник

ИК

Иван Калининский... in Moscow Spark
Иван Калининский
при указании такого же способа партиционирования и бакетирования, то есть, df.write.mode(SaveMode.Append).bucketBy(n,field,fields:_*).sortBy(field2,fields2:_*).saveAsTable(tableName) каждый раз будет записывать в одни и те же бакеты записи, которые дают одинаковый хеш по модулю n. Существующие файлы не будут изменены, потому что это в общем случае невозможно. Сколько бы строк ни было добавлено в бакет, будет создан минимум один новый файл в бакете
невозможно - это я говорю с точки зрения современной реализации, вообще, конечно, можно переписать файл или присоединить к нему блок, и упаковать всё это в FormatWriter, но сейчас этого совершенно точно нет в спарк 2.4.0, файлы не изменяются, только новые создаются
источник

ЕГ

Евгений Глотов... in Moscow Spark
Иван Калининский
Сортировка в пределах секции RDD в случае одного файла на бакет гарантируется, если больше одного файла хоть в одном бакете, то дело плохо, сортировка не обеспечена

Управлять размером файлов спарк не умеет и не собирается
А где-то в коде джойна есть опора на гарантию сортировки в бакетах, или это так, для оптимизации хранения используется?
источник

ИК

Иван Калининский... in Moscow Spark
Евгений Глотов
А где-то в коде джойна есть опора на гарантию сортировки в бакетах, или это так, для оптимизации хранения используется?
есть
источник

ИК

Иван Калининский... in Moscow Spark
пользуюсь, но очень недолго
источник

ЕГ

Евгений Глотов... in Moscow Spark
Спасибо за инфу!
источник

ИК

Иван Калининский... in Moscow Spark
первые результаты впечатляют, шафл уменьшился на два десятичных порядка
источник

ИК

Иван Калининский... in Moscow Spark
но это с учётом специфики, джоины у всех разные))
источник

NN

No Name in Moscow Spark
Иван Калининский
невозможно - это я говорю с точки зрения современной реализации, вообще, конечно, можно переписать файл или присоединить к нему блок, и упаковать всё это в FormatWriter, но сейчас этого совершенно точно нет в спарк 2.4.0, файлы не изменяются, только новые создаются
Вот это ещё беспокоит - если аппенды мелкие, то в итоге получится неоптимально - огромное количество мелких файлов это не оч, и в итоге придется все равно это дело конкатить
источник

ИК

Иван Калининский... in Moscow Spark
No Name
Вот это ещё беспокоит - если аппенды мелкие, то в итоге получится неоптимально - огромное количество мелких файлов это не оч, и в итоге придется все равно это дело конкатить
да, или писать свою реализацию (это возможно) или ждать, пока сделают (не дождёмся)
источник