Можно ли задать несколько столбцов в partitionColumns при работе с Spark-JDBC? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь прочитать таблицу на postgres db и загрузить данные в таблицу Hive на HDFS, как показано ниже:

val yearDF = spark.read.format("jdbc").option("url", connectionUrl).option("dbtable", s"(${execQuery}) as year2017")
.option("user", devUserName).option("password", devPassword)
.option("partitionColumn","source_system_name")
.option("lowerBound", 10000).option("upperBound", 50000)
.option("numPartitions",12).load()

Моя работа не выполняется с сообщением: Контейнер завершен с ненулевым значениемкод выхода 143 и проблема с GC.

Данные огромны и вызывают перекос в разделах.Изучив данные в таблице, я понял, что имя_источника_источника - неправильный столбец для разделения данных.Но я обнаружил, что комбинация из трех других столбцов: source_system_name, org_code, period, которые лучше всего подходят для разделения данных при чтении и обработке.(Я сделал 'group by', чтобы узнать количество строк в таблице, и данные немного равномерно распределены по каждой группе) Но я не знаю, как я могу использовать все три столбца в partitionColumn в spark-jdbcвариант.Может ли кто-нибудь дать мне знать, можно ли использовать несколько столбцов в опции: partitionColumn при чтении данных из таблицы RDBMS.

1 Ответ

0 голосов
/ 05 октября 2018

Нет, применяется следующее:

  • Для partitionColumn, lowerBound, upperBound - все эти параметры должны быть указаны, если указан любой из них.Кроме того, необходимо указать numPartitions.

  • Они описывают, как разделить таблицу при параллельном чтении от нескольких работников.partitionColumn должен быть числовым столбцом из рассматриваемой таблицы.Последнее означает, что это может быть только 1 столбец.

  • lowerBound и upperBound используются только для определения шага разделения, а не для фильтрации строк в таблице.Таким образом, все строки в таблице будут разделены и возвращены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...