gpt4 book ai didi

mysql - sq.read.jdbc 和 sq.read.format ('jdbc' 之间有什么区别)?

转载 作者:行者123 更新时间:2023-11-28 23:29:26 25 4
gpt4 key购买 nike

我正在玩与本地 mysql 实例的 Spark 连接。

我有一个正在传递的 mysql jdbc jar:

pyspark --jars /path/to/jar

然后我创建了我的 SQLContext 等。然后我开始做连接的事情,一个版本抛出错误,而另一个则没有。

SQLContext.read.jdbc(url="jdbc:mysql://localhost:3306?user=root", table="spark.words")

这会抛出一个驱动程序未找到的错误。

SQLContext.read.format("jdbc").option("url","jdbc:mysql://localhost:3306?user=root").option("dbtable","spark.words").option("driver", 'com.mysql.jdbc.Driver').load()

这按预期工作。

我认为两者大致相同,前者是后者的一种便捷方法。有什么区别,为什么 SQLContext.read.jdbc 版本会出错?

最佳答案

一般来说,这两种方法应该是等价的,尽管在某些边界情况下事情不会按预期工作(例如 DataFrameWriter 和 JDBC 源似乎在 format 之间表达略有不同的行为("jdbc")jdbc(...)).

在这种特殊情况下,答案很简单。这些调用并不等效,因为第二种解决方案是显式声明驱动程序类,而第一种不是。

如果您希望它们的行为方式相同,您应该提供properties dict:

sqlContext.read.jdbc(
url=..., table=...,
properties={"driver": "com.mysql.jdbc.Driver"})

关于mysql - sq.read.jdbc 和 sq.read.format ('jdbc' 之间有什么区别)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836908/

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