Сервер Spark Thrift загружает полный набор данных в память перед передачей через JDBC - PullRequest
0 голосов
/ 01 ноября 2018

Сервер Spark Thrift пытается загрузить полный набор данных в память перед передачей через JDBC, на клиенте JDBC я получаю сообщение об ошибке:

SQL Error: org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 48 tasks (XX GB) is bigger than spark.driver.maxResultSize (XX GB)
  org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 48 tasks (XX GB) is bigger than spark.driver.maxResultSize (XX GB)
  org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 48 tasks (XX GB) is bigger than spark.driver.maxResultSize (XX GB)

Запрос: выберите * из таблицы. Возможно ли включить что-то вроде потокового режима для Thrift Server? Основная цель - предоставить доступ из Pentaho ETL к кластеру Hadoop с использованием SparkSQL через соединение JDBC. Но если Thrift Server должен загрузить полный набор данных в память перед передачей, этот подход не будет работать.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

В вашей ситуации увеличивается память искрового драйвера и максимальный размер результата как spark.driver.memory = xG, spark.driver.maxResultSize = xG. согласно https://spark.apache.org/docs/latest/configuration.html

0 голосов
/ 03 ноября 2018

Решение: spark.sql.thriftServer.incrementalCollect = true

...