Как повысить производительность медленных заданий Spark с использованием соединения DataFrame и JDBC?

Я пытаюсь получить доступ к таблице Teradata среднего размера (~ 100 миллионов строк) через JDBC в автономном режиме на одном узле (локальный [*]).

Я использую Spark 1.4.1. и настроен на очень мощную машину (2 процессора, 24 ядра, 126 ГБ ОЗУ).

Я пробовал несколько вариантов настройки и настройки памяти, чтобы она работала быстрее, но ни один из них не оказал большого влияния.

Я уверен, что есть кое-что, что я пропускаю, и ниже моя последняя попытка, которая заняла приблизительно 11 минут, чтобы получить это простое число против всего лишь 40 секунд, используя соединение JDBC через R, чтобы получить количество.

bin/pyspark --driver-memory 40g --executor-memory 40g

df = sqlContext.read.jdbc("jdbc:teradata://......)
df.count()

Когда я пытался с БОЛЬШОЙ таблицей (5B записей), то по завершении запроса результаты не возвращались.

Ответы на вопрос(2)

Ваш ответ на вопрос