gpt4 book ai didi

scala - 如何在 Spark SQL 中指定多个表?

转载 作者:行者123 更新时间:2023-12-04 17:44:54 25 4
gpt4 key购买 nike

我有一个代码,我需要在其中设置三个表。为此,我需要调用 jdbc每个表执行 3 次。见下面的代码

val props = new Properties
props.setProperty("user", "root")
props.setProperty("password", "pass")

val df0 = sqlContext.read.jdbc(
"jdbc:mysql://127.0.0.1:3306/Firm42", "company", props)

val df1 = sqlContext.read.jdbc(
"jdbc:mysql://127.0.0.1:3306/Firm42", "employee", props)

val df2 = sqlContext.read.jdbc(
"jdbc:mysql://127.0.0.1:3306/Firm42", "company_employee", props)

df0.registerTempTable("company")
df1.registerTempTable("employee")
df2.registerTempTable("company_employee")

val rdf = sqlContext.sql(
"""some_sql_query_with_joins_of_various_tables""".stripMargin)

rdf.show

是否可以简化我的代码?或者也许有某种方法可以在 SQL 配置中的某处指定多个表。

最佳答案

DRY :

val url = "jdbc:mysql://127.0.0.1:3306/Firm42"
val tables = List("company", "employee", "company_employee")

val dfs = for {
table <- tables
} yield (table, sqlContext.read.jdbc(url, table, props))

for {
(name, df) <- dfs
} df.registerTempTable(name)

不需要数据框?跳过第一个循环:
for {
table <- tables
} sqlContext.read.jdbc(url, table, props).registerTempTable(table)

关于scala - 如何在 Spark SQL 中指定多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38235632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com