Как Hive on Spark может читать данные из jdbc? - PullRequest
0 голосов
/ 08 мая 2018

Мы используем Hive на Spark, и мы хотим сделать все на улье, и используем spark для расчета. Это означает, что нам нужно писать не код карты / сокращения, а код, подобный SQL.

И теперь у нас возникла проблема, мы хотим прочитать источник данных, такой как postgresql, и управлять им с помощью простого SQL-кода. И мы хотим, чтобы он работал на кластере.

У меня есть идея, я могу написать несколько Uive-файлов Hive для подключения к jdbc и создать таблицу, подобную данным, но я обнаружил, что она не работает на искровой работе, тогда она будет бесполезна.

То, что мы хотим, так это набирать в улье:

hive>select myfunc('jdbc:***://***','root','pw','some sql here');

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

Я не знаю, что мне теперь делать, может, кто-нибудь даст мне какой-нибудь совет.


Это можно сделать вот так:

hive> select * from hive_table where hive_table.id in
      (select myfunc('jdbcUrl','user','pw','sql'));

Я знаю, что hive используется для компиляции задания sql в MapReduce, я хочу знать, как сделать так, чтобы мой sql / udf компилировался в задание MapReduce как spark.read().jdbc(...)

1 Ответ

0 голосов
/ 08 мая 2018

Я думаю, что проще загрузить данные из базы данных в датафрейм, тогда вы можете сбросить их в куст при необходимости. Читать это: https://spark.apache.org/docs/2.2.0/sql-programming-guide.html#jdbc-to-other-databases

См. Имя свойства dbtable, вы можете загрузить часть таблицы, определенной в SQL-запросе.

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