gpt4 book ai didi

java - 我们可以在 Spark sql 中触发传统的连接查询吗

转载 作者:行者123 更新时间:2023-12-02 10:49:31 27 4
gpt4 key购买 nike

假设我有两个表,table1和table2。

形成的查询类似于:select * from table1 inner join table2 on table1.id = table2.id;

现在,当我们通过此代码加载 Spark 数据库连接时。我们如何提及两个表,以便可以触发联接?

引用代码

spark.read().format("jdbc").option("url", "jdbc:mysql://localhost:3306/databasename")
.option("driver", "com.mysql.jdbc.Driver")
.option("dbtable", "table1")
.option("user", "root")
.option("password", "root")
.load().createOrReplaceTempView("table1");

Dataset<Row> sql = spark.sql("select * from table1 inner join table2 on table1.id = table2.id");

我已经尝试过上面的代码,但它说未找到table2。那么上面的查询可以从 Spark sql 中触发吗?

最佳答案

在 dbtable 选项中,您可以使用查询,但使用别名并加载数据帧。

Dataset<Row> load = spark.read().format("jdbc").option("url", "jdbc:mysql://localhost:3306/etl_config")
.option("driver", "com.mysql.jdbc.Driver")
.option("dbtable", "(select * from forms inner join form_entity on forms.form_id = form_entity.form_parent_id where forms.form_id = 3)tmp")
.option("user", "root")
.option("password", "root")
.load();

上述配置将被解析为select * from tmp where 1=0;

关于java - 我们可以在 Spark sql 中触发传统的连接查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277504/

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