【问题标题】:Running Dependent Queries with SparkSQL using Spark Session使用 Spark Session 使用 SparkSQL 运行依赖查询
【发布时间】:2018-04-29 07:53:57
【问题描述】:

我们有 3 个查询目前正在 HIVE 上运行。

使用 Spark 2.1.0

我们正在尝试使用 Spark SQL 运行它,但使用 SparkSession(比如用 Scala 代码包装制作一个 Jar,然后使用 Spark-Submit 提交)

现在举个例子: Query-1 使用 3 个表 (Table - a, b & c) 并插入到表中 --> Output_Table_1

Query-2 使用很少的其他表(执行连接)和 output_table_1,它是从 Query-1 的输出中填充的。这给出了 output_table_2

同样,Query-3 使用很少的表,可能会也可能不会使用 output_table_1 和/或 output_table_2(我们不确定是否仍在设计中)

目前我这样做的方式是将所有查询写入属性文件并使用Typesafe.ConfigFactorydef main 中读取它(请建议是否有更好的方法)

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")

对于第三个查询和表,我也遇到了同样的错误。所以基本上我正在尝试链接查询并在后面的查询中使用初始查询的输出。我无法将查询分解为更小的数据框,因为它们很复杂。

如何处理这种情况。同时让我知道实现这一目标的最佳实践是什么?

【问题讨论】:

  • 这里有任何帮助???

标签: scala apache-spark apache-spark-sql apache-spark-2.0 spark-hive


【解决方案1】:

你为什么不这样做

query_1.registerTempTable("output_table_1")

【讨论】:

  • 然后我将如何在 query_2 中使用它?正如我提到的,我将查询外部 保存在属性文件中
猜你喜欢
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 2017-11-05
  • 2014-10-14
相关资源
最近更新 更多