Size: a a a

2020 March 30

N

Nikolay in Moscow Spark
create chunks заполнит таблицу внутреннюю. Из нее можно селектить.
источник

ИК

Иван Калининский... in Moscow Spark
Nikolay
create chunks заполнит таблицу внутреннюю. Из нее можно селектить.
А, это тоже было не разрешено( архитектурные ограничения ((
источник

ИК

Иван Калининский... in Moscow Spark
Если на лету делать разбиение, то можно посмотреть исходники sqoop, в них есть Oracle conector (oraoop), и там как раз создаются диапазоны rowid!
источник

GT

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

Ещё раз рассказываю ситуацию: произвольная таблица партиционируется по некотором выражению, я получаю количество файлов в каждой партиции и выполняю функцию percentile_approx. Второй её аргумент - массив процентилей, зависит от числа файлов, то есть, динамический. Но передан может быть только фиксированный литерал. Поэтому я применяю к исходном датафрейму фильтр, выполняю percentile_approx, собираю новый датафрейм из полученных с помощью reduce(_ unión _), и на этом основные сложности заканчиваются.

Основной вопрос: как избавиться от union, сохранив расчёт значений процентилей индивидуальным по каждой партиции?
Смотрел в сторону mapPartitions, но не смог разобраться, как можно вызвать percentile_approx для итератора.
Может немного не понял, но зачем разбиение на кучу дф если таблица одна?
источник

ИК

Иван Калининский... in Moscow Spark
Но вся фишка в том, что rowid и данные не соотнесены никак, поэтому для партиционирования по данным не подойдёт!
источник

ИК

Иван Калининский... in Moscow Spark
Gennady Timofeev
Может немного не понял, но зачем разбиение на кучу дф если таблица одна?
Потому что для каждой будущей партиции надо выполнить percentile_approx со вторым параметром, который для каждой партиции свой. А его можно передать только литералом
источник

ИК

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

GT

Gennady Timofeev in Moscow Spark
Иван Калининский
Потому что для каждой будущей партиции надо выполнить percentile_approx со вторым параметром, который для каждой партиции свой. А его можно передать только литералом
А окна не подходят?
источник

ИК

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

ИК

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

GT

Gennady Timofeev in Moscow Spark
Ммммм, таким же образом? Или я все не понимаю, как у вас там подмножества для вычисления персентилей формируются 🤔
источник

ИК

Иван Калининский... in Moscow Spark
Следующим образом: файл должен содержать миллион записей. В партиции 16 миллионов строк - нужно 16 файлов, 15 значений процентилей. Полтора миллиона - 2 файла, одно значение процентиля. Меньше миллиона - скипаем эту партиции, она будет записана одним файлом
источник

N

Nikolay in Moscow Spark
Иван , а изначальна я какая у вас задача. Может быть можно сделать ее иначе ? Зачем вам все эти вычисления
источник

GT

Gennady Timofeev in Moscow Spark
Иван Калининский
Следующим образом: файл должен содержать миллион записей. В партиции 16 миллионов строк - нужно 16 файлов, 15 значений процентилей. Полтора миллиона - 2 файла, одно значение процентиля. Меньше миллиона - скипаем эту партиции, она будет записана одним файлом
N файлов с дополнительным полем с N-1 персентилей? И как раз какие именно персентили вычисляется для каждого файла в зависимости от данных в остальных файлах?
источник

ИК

Иван Калининский... in Moscow Spark
Nikolay
Иван , а изначальна я какая у вас задача. Может быть можно сделать ее иначе ? Зачем вам все эти вычисления
В вычисления нет ничего плохого) в конце концов, компьютеры для этого и предназначены. Изначальная задача - оптимизировать данные. Это весьма широкая формулировка, так что допускает много способов реализации, это один из них. Разделение первичного ключа по диапазонам без сортировки
источник

ИК

Иван Калининский... in Moscow Spark
Gennady Timofeev
N файлов с дополнительным полем с N-1 персентилей? И как раз какие именно персентили вычисляется для каждого файла в зависимости от данных в остальных файлах?
Нет, файлы ещё не созданы) есть только их количество
источник

GT

Gennady Timofeev in Moscow Spark
Иван Калининский
В вычисления нет ничего плохого) в конце концов, компьютеры для этого и предназначены. Изначальная задача - оптимизировать данные. Это весьма широкая формулировка, так что допускает много способов реализации, это один из них. Разделение первичного ключа по диапазонам без сортировки
Действительно непонятна задача. Так-то вы в лоб можете определить разные окна и считать (одно для разделения по миллиону записей, другое для вычисления персентилей, раз нужны данные из других миллионов записей)
источник

ИК

Иван Калининский... in Moscow Spark
Gennady Timofeev
Действительно непонятна задача. Так-то вы в лоб можете определить разные окна и считать (одно для разделения по миллиону записей, другое для вычисления персентилей, раз нужны данные из других миллионов записей)
Да, непонятно формулирую, может в этом и причина, что ответа пока не получил.

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

DZ

Dmitry Zuev in Moscow Spark
Иван Калининский
Да, непонятно формулирую, может в этом и причина, что ответа пока не получил.

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

ИК

Иван Калининский... in Moscow Spark
Не соблюдается непересечение ключей в файлах
источник