Мы используем 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(...)