現在 HIVE で実行されている 3 つのクエリがあります。
Spark 2.1.0 の使用
Spark SQL を使用してそれを実行しようとしていますが、SparkSession を使用しています (Jar を作成する Scala コードでラップし、Spark-Submit を使用して送信するなど)。
例として、クエリ 1 は 3 つのテーブル (テーブル - a、b & c) を使用し、テーブルに挿入します --> Output_Table_1
Query-2 は、他のいくつかのテーブル (結合を実行する) と、Query-1 の出力から取り込まれたoutput_table_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 番目のクエリとテーブルについても、同じエラーが発生します。したがって、基本的には、クエリをチェーンして、後のクエリで初期クエリの出力を使用しようとしています。クエリは複雑であるため、クエリを小さなデータフレームに分割することはできません。
そのようなシナリオをどのように進めるか。また、これを達成するためのベストプラクティスは何ですか?