【发布时间】:2021-02-03 04:21:24
【问题描述】:
我想创建一个 Spark 对象,该对象可以读取整个架构,而不仅仅是从该架构中读取一个表。这是因为我想执行一个连接多个表的特定查询(我不想单独从每个表中读取并使用 Spark 手动重新创建查询,因为查询又长又复杂)。我希望它会像这样工作:
val Schema_DF = spark.read
.format("jdbc")
.option("url", "jdbc://example.com")
.option("schema", "SCHEMA_NAME")
.option("user", "username")
.option("password", "pass")
.load()
我可以使用不同的方法将我想要的查询加载为 ResultSet,但这似乎很冗长,因为我需要将其转换为 Dataframe。任何帮助将不胜感激。
干杯
【问题讨论】:
-
您的方法会加载单个数据框,因此确实不会加载所有表。你检查了stackoverflow.com/questions/54493740/… 吗? - 我知道它是 Python,但对于 Scala 来说几乎是一样的
-
加载所有表然后在 Spark 中进行连接的目的是什么?直接在数据库上做不是更有效率吗?还是我在您的工作流程中遗漏了什么?
-
您好,感谢您的评论。我已经将每个表单独加载为单独的数据框,并在 Spark 中手动完成连接。这个问题的目的是能够按原样执行整个查询,并验证我在 Spark 中所做的手动连接是否生成了正确的输出。我已经能够执行查询并将结果存储为 Scala 中的 ResultSet,但是很难将 ResultSet 与 Dataframe 进行比较 - 因此我试图将整个 Schema 作为 Dataframe 连接,以便我的两个表属于同一类型。让我知道这是否有意义?
标签: scala dataframe apache-spark schema