Size: a a a

2021 April 01

ИК

Иван Калининский... in Moscow Spark
No Name
А есть какие-то преимущества в большем количестве файлов на бакет?
Есть, если один файл распухает сверх меры. Надо его разделять, но в таком случае нужен способ сохранять сортировку, чтобы продолжать ей пользоваться. Для алгоритма «хеш по модулю» динамическое изменение бакетов невозможно в принципе
источник

ИК

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

AS

Andrey Smirnov in Moscow Spark
Иван Калининский
Есть, если один файл распухает сверх меры. Надо его разделять, но в таком случае нужен способ сохранять сортировку, чтобы продолжать ей пользоваться. Для алгоритма «хеш по модулю» динамическое изменение бакетов невозможно в принципе
но можно использовать другие алгоритмы
источник

ИК

Иван Калининский... in Moscow Spark
Andrey Smirnov
но можно использовать другие алгоритмы
да))
источник

R

Renarde in Moscow Spark
No Name
А как сейчас у дельты с бакетированием? Есть ли возможность дописывать в файлы и сортить внутри, а не делать бесконечные мелкие аппенды?)
в дельте такие же бакеты как в паркете. В OSS можно использовать их, на платформе мы рекомендуем ZORDER BY
источник

А

Алексей in Moscow Spark
No Name
А есть какие-то преимущества в большем количестве файлов на бакет?
то что не нужен шафл при записи, чтобы мержить файлы в 1
источник

NN

No Name in Moscow Spark
Иван Калининский
Есть, если один файл распухает сверх меры. Надо его разделять, но в таком случае нужен способ сохранять сортировку, чтобы продолжать ей пользоваться. Для алгоритма «хеш по модулю» динамическое изменение бакетов невозможно в принципе
Да, точно, чёт я затупил
источник

ИК

Иван Калининский... in Moscow Spark
No Name
Да, точно, чёт я затупил
ну, тут всё неоднозначно, ведь файл можно бы прочитать в несколько секций RDD, и тогда даже очень большой файл может быть не проблемой, а оптимизацией. Но один бакет читается строго в одну секцию RDD, и вот тут же не очень-то получится, если файл дорос до десятка гигов
источник

NN

No Name in Moscow Spark
Иван Калининский
ну, тут всё неоднозначно, ведь файл можно бы прочитать в несколько секций RDD, и тогда даже очень большой файл может быть не проблемой, а оптимизацией. Но один бакет читается строго в одну секцию RDD, и вот тут же не очень-то получится, если файл дорос до десятка гигов
Да, тут без вариантов
источник
2021 April 02

PK

Pavel Klemenkov in Moscow Spark
Вот уж земля квадратная. Купил плитку у ИП Захария )
источник

N

Nikita Blagodarnyy in Moscow Spark
Pavel Klemenkov
Вот уж земля квадратная. Купил плитку у ИП Захария )
ну должна быть хорошая. получше паркета.
источник

PK

Pavel Klemenkov in Moscow Spark
Nikita Blagodarnyy
ну должна быть хорошая. получше паркета.
Лол
источник

AS

Andrey Smirnov in Moscow Spark
Nikita Blagodarnyy
ну должна быть хорошая. получше паркета.
Почему ты так решил, как раз как паркет и будет
источник

N

Nikita Blagodarnyy in Moscow Spark
Почему каталист не может вот это прожевать? Последнюю строку.
Пример синтетический из теста.

import java.time.LocalDateTime
val opd = LocalDateTime.
now().toString
var myDF =
Seq(opd).toDF("opdt").withColumn("opd",to_timestamp(col("opdt"))).drop("opdt")
myDF = myDF.withColumn("opday", myDF.selectExpr("to_date(opd) as part")("part"))
источник

Д

Дмитрий in Moscow Spark
Ухты var 👍 а смысл ?
источник

GP

Grigory Pomadchin in Moscow Spark
Дмитрий
Ухты var 👍 а смысл ?
никакого, так делать не над
источник

Д

Дмитрий in Moscow Spark
У меня сегодня день мутаций 🤣 пришлось юзать ArrayBuffer, а тут синтетика с var и кучкой присваиваний .
источник
2021 April 04

K

KrivdaTheTriewe in Moscow Spark
Ребя, кто с цепелином в живой природе использует спарк 3.1 ?
источник

ПБ

Повелитель Бури... in Moscow Spark
Vasily Safronov
Ключевое слово "привычки" :))

Мой кейс:
под задачи BI в компании накатал за пару дней витринку, ничего сложного: простые агрегации, конвертация валют и с десяток простых бизнесовых метрик.

Тема настолько зашла, что в течение следующих 1.5 месяцев ко мне почти каждый день приходили и просили добавить "всего лишь ещё один" расчётный показатель. В итоге sql-код стал простынкой из >500 строк, и не смотря на то, что я старался соблюдать принципы модульности с кучей with () as, никто кроме меня и ребят из моей команды, которые приложили руку, разобраться в нём, не то чтобы не может, а просто не хочет.

Пример: понадобилось добавить расчёт кумулятивной суммы метрики. В df это можно сделать просто поменяв sum на cumsum. В sql не так, нужно извращаться. Попробовав наиболее распространённый рецепт - получили падение производительности на 2 порядка. План запроса для такой простыни, как вы понимаете отдаёт другую нечитаемую простыню. На просьбу к нашему dba-щику помочь, он посмотрел на нашу простыню, перекрестился и теперь просто обходит нас стороной.

Каждая новая мелкая доработка стала очень дорогой и стрёмной, почти всегда ломающей, то что уже работало. Продебажить классическими средствами нельзя. Юнит-тестов нет, потому что нет юнитов, короче кошмар.

В итоге застопил все тикеты на доработку и медитативно переписываем всё на df
Тут помогает процедурный подход

Каждый блок это 1 преобразование  который порождает новую таблицу
А dataflow решается через airfow
источник

АЖ

Андрей Жуков... in Moscow Spark
KrivdaTheTriewe
Ребя, кто с цепелином в живой природе использует спарк 3.1 ?
А там что-то сломалось относительно 3.0?
источник