Выполнение зависимых запросов с SparkSQL с использованием Spark Session

У нас есть 3 запроса, которые в настоящее время работают на HIVE.

Использование Spark 2.1.0

Мы пытаемся выполнить это с использованием Spark SQL, но с помощью SparkSession(например, обтекание кодом Scala, создание Jar-файла, а затем отправка с использованием Spark-Submit)

Теперь для примера скажем: Query-1 использует 3 таблицы (Таблица - a, b & c) и Вставить в таблицу -> Output_Table_1

Query-2 использует несколько других таблиц (выполняющих соединения) и output_table_1, который заполняется из выходных данных Query-1. Это дает output_table_2

Точно так же Query-3 использует несколько таблиц и может использовать или не использовать output_table_1 и / или output_table_2(мы не уверены в этом, так как все еще разрабатываем)

В настоящее время я делаю это, записывая все запросы в файле свойств и читая их в def main с помощью Typesafe.ConfigFactory (Пожалуйста, предложите, если есть лучший способ)

в def main(){} что я делаю это:

val query_1 = spark.sql('query1')
query_1.write.mode("overwrite").insertInto("output_table_1")

Теперь, когда я делаю шаг ниже, он выдает ошибку - output_table_1 не найден

val query_2 = spark.sql('query2')
query_2.write.mode("overwrite").insertInto("output_table_2")

Аналогично для 3-го запроса и таблицы я получаю ту же ошибку. Поэтому я пытаюсь объединить запросы в цепочку и использовать результаты начальных запросов в последующих. Я не могу разбить запросы на более мелкие Датафреймы, так как они сложные.

Как идти дальше по такому сценарию. Также дайте мне знать, что является наилучшей практикой для достижения этой цели?

1 ответ

Почему ты не делаешь

query_1.registerTempTable("output_table_1")
Другие вопросы по тегам