Size: a a a

2021 February 12

ПФ

Паша Финкельштейн... in Moscow Spark
Grigory Pomadchin
ну в кафке авро сапорт есть; лучше чем ничего; и сжатие приемлимое и какаято вреисонность
У кафки обычно схемалесс Авро, который уже не совсем Авро вроде бы
источник

AS

Anton Solomonov in Moscow Spark
Gev
Да уже. Блин. А чем тогда проверить DF
Если просто написать df.count()>0?
источник

G

Gev in Moscow Spark
Anton Solomonov
Если просто написать df.count()>0?
Это самый худший вариант.
источник

G

Gev in Moscow Spark
От этого и пытаюсь уйти
источник

AS

Anton Solomonov in Moscow Spark
Gev
Это самый худший вариант.
Он медленней чем isEmpty?
источник

G

Gev in Moscow Spark
Anton Solomonov
Он медленней чем isEmpty?
Да.
источник

G

Gev in Moscow Spark
Но мне оба варианта не подходят
источник

ИК

Иван Калининский... in Moscow Spark
Gev
Вопрос
Как посчитать количество записей DF самым не тяжолым способом. по быстрому
DF c фильтрами или другими трансформациями, изменяющими количество строк? Или просто чтение файлов?
источник

ИК

Иван Калининский... in Moscow Spark
Gev
Да, нужно точно
Еще советуют предварительно сделать cash или persist но я не пойму в чем выгода
.rdd.persist().count()
Не делать так. Во всех случаях работало дольше или фейлилось. Персист только для небольших сложных планов с многократным использованием или, как мне недавно подсказал Григорий, если используются DF.checkpoint
источник

ИК

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

Если просто проверить, есть ли хоть одна запись,
def isEmpty(df: DataFrame): Boolean = df.head(1).isEmpty

Если просто попробовать догадаться, прочитает ли DF что-нибудь, можно поискать файлы в читаемых путях, но df сам это делает, когда инферит схему, если файлов нет, то бросит исключение и всё будет понятно
источник

G

Gev in Moscow Spark
Иван Калининский
Если это паркет без фильтров, то есть вариант читать футеры и брать из них количество записей, оно там точное. И есть по каждой колонке количество null

Если просто проверить, есть ли хоть одна запись,
def isEmpty(df: DataFrame): Boolean = df.head(1).isEmpty

Если просто попробовать догадаться, прочитает ли DF что-нибудь, можно поискать файлы в читаемых путях, но df сам это делает, когда инферит схему, если файлов нет, то бросит исключение и всё будет понятно
То есть предложение читать футеры паркета и брать инфу оттуда
источник

ИК

Иван Калининский... in Moscow Spark
да, это именно такое предложение))
источник

G

Gev in Moscow Spark
Иван Калининский
да, это именно такое предложение))
Так вопрос в том что днные паркета джойнятся со справочником. И вот в результате джойна не понятно - есть данные или нет. Так в результате придется сохранять
источник

ИК

Иван Калининский... in Moscow Spark
Есть джоин - нет простых путей.
источник

ИК

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

AA

Aleksandr Aleksandro... in Moscow Spark
Иван Калининский
Если это паркет без фильтров, то есть вариант читать футеры и брать из них количество записей, оно там точное. И есть по каждой колонке количество null

Если просто проверить, есть ли хоть одна запись,
def isEmpty(df: DataFrame): Boolean = df.head(1).isEmpty

Если просто попробовать догадаться, прочитает ли DF что-нибудь, можно поискать файлы в читаемых путях, но df сам это делает, когда инферит схему, если файлов нет, то бросит исключение и всё будет понятно
А разве когда на паркетах без всего просто делаешь каунт, он так не делает? Там же вроде такая логика и есть - читает просто футеры и складывает
источник

ИК

Иван Калининский... in Moscow Spark
Aleksandr Aleksandrov
А разве когда на паркетах без всего просто делаешь каунт, он так не делает? Там же вроде такая логика и есть - читает просто футеры и складывает
пока что не могу этому поверить. RDD как правило читает не файлы полностью, а блоки hdfs, поэтому ему нужно пройтись по итераторам
источник

ИК

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

ПФ

Паша Финкельштейн... in Moscow Spark
Если есть джойн — можно попробовать изобрести велосипед с мининимизацией количества данных
источник

ПФ

Паша Финкельштейн... in Moscow Spark
селектим только джойн-колонки, дальше на них выполняем джойн и проверяем размер
источник