Я пытаюсь извлечь данные из большой таблицы в SAP HANA, размер которой составляет около 1,5 ТБ, и лучший способ - работать параллельно между узлами и потоками. Spark JDBC - идеальный кандидат для этой задачи, но для фактического параллельного извлечения требуется установить столбец раздела, нижнюю / верхнюю границу и количество разделов. Чтобы упростить операцию извлечения, я подумал о добавлении столбца добавленного раздела, который будет функцией row_number (), и использовать MIN (), MAX () как нижнюю / верхнюю границы соответственно. И тогда операционная группа просто должна будет предоставить необходимое количество разделов.
Проблема в том, что в HANA не хватает памяти, и очень вероятно, что row_number () слишком затратна для движка. Я могу только представить, что более 100 потоков запускают один и тот же запрос во время каждой выборки, чтобы применить фильтры where и получить соответствующий фрагмент.
Итак, мой вопрос: как будет вести себя Spark, если я отключу опцию предиката pushdown? он читается только одним исполнителем, а затем фильтры применяются на стороне искры? Или это волшебство, чтобы разделить часть извлечения из БД?
Что вы могли бы предложить для извлечения такой большой таблицы с помощью доступной программы чтения JDBC?
Заранее спасибо.