gpt4 book ai didi

scala - 从 Spark 查询 MySQL 数据库

转载 作者:行者123 更新时间:2023-12-05 02:20:16 28 4
gpt4 key购买 nike

我目前正在从 Spark 查询 MySQL,如下所示:

val sqlContext = new SQLContext(sc)

val dataframe_mysql = sqlContext
.read.format("jdbc").option("driver", "com.mysql.jdbc.Driver")
.option("url", url)
.option("dbtable", "MyTable")
.option("user", "MyUser").option("password", "MyPwd")
.load()

dataframe_mysql.registerTempTable("MyTable")

val lastNames = dataframe_mysql.sqlContext.sql("select lastName from MyTable")

但这会加载 MyTable 中的所有列,而我不需要它(我只需要 lastName 列)。 (此外,我需要一个 sql 连接查询,我不想将所有内容都加载到 Spark 中)。

如何替换 option("dbtable", "MyTable") 行以指定 SQL 查询而不是表?

我尝试使用 .option("dbtable", "select lastName from MyTable") 进行查询(正如我在某处读到的),但是失败了:

MySQLSyntaxErrorException: select lastName from MyTable WHERE 1=0

最佳答案

您读到的内容是正确的,您需要传递带有下推谓词的查询作为一个选项。

MySQL 在这里需要一个别名表或表全名:

// without pushdown predicates
.option("dbtable", "MyTable")

// with pushdown predicates
.option("dbtable", "(select lastName from MyTable) as T")

所以您实际上希望使用后面的查询。

注意 T 可以是任何东西。

关于scala - 从 Spark 查询 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39786452/

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