Мы используем Hive в Spark, и мы хотим делать все в Hive, а также использовать Spark для вычислений. Это означает, что нам не нужно писать код карты / сокращения, а код, подобный sql.
И теперь у нас возникла проблема, мы хотим читать источник данных, такой как postgresql, и управлять им с помощью простого кода sql. И мы хотим, чтобы он работал в кластере.
У меня есть идея, я могу написать несколько udf-файлов Hive для подключения к jdbc и создания таблицы, подобной данным, но я обнаружил, что она не запускается в искровом задании, тогда это будет бесполезно.
Мы хотим набрать вот так в hive:
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'));
Я знаю, что куст используется для компиляции sql в задание MapReduce, я хочу знать, как сделать, чтобы мой sql / udf скомпилировался в задание MapReduce как spark.read().jdbc(...)