Выполнение зависимых запросов с 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")