在 python 3 中使用 pyspark 从 MySql db 加载数据
Posted
技术标签:
【中文标题】在 python 3 中使用 pyspark 从 MySql db 加载数据【英文标题】:Load data from the MySql db using pyspark in python 3 【发布时间】:2018-01-02 00:05:24 【问题描述】:我正在尝试使用 pyspark 从 mysql 数据库加载表。我写了以下代码:
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
hostname='localhost'
jdbcPort=3306
dbname='db'
username='user'
password='password'
#jdbc_url = "jdbc:mysql://0:1/2".format(hostname, jdbcPort, dbname)
url="jdbc:mysql://"
# For SQLServer, pass in the "driver" option
# driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
# Add "driver" : driverClass
connectionProperties =
"user" : username,
"password" : password
pushdown_query = "select * from table LIMIT 10;"
df = spark.read.jdbc(url=url, dbtable=pushdown_query, properties=connectionProperties)
#sqlContext=SQLContext(sc)
#df=sqlContext.read.jdbc(url=url, table=pushdown_query, properties=properties)
display(df)
但我收到以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-21-70890f1cf807> in <module>()
15
16 pushdown_query = "select * from table LIMIT 10;"
---> 17 df = spark.read.jdbc(url=url, dbtable=pushdown_query, properties=connectionProperties)
18 #sqlContext=SQLContext(sc)
19 #df=sqlContext.read.jdbc(url=url, table=pushdown_query, properties=properties)
AttributeError: 'property' object has no attribute 'jdbc'
谁能帮我解决这个错误?
谢谢
【问题讨论】:
你得到一个异常,因为你没有初始化SparkSession
。查询也不正确。
spark = SparkSession.builder.config(conf=SparkConf()).getOrCreate()
。稍后你必须fix the query。
好吧,请阅读如何创建minimal reproducible example,并按照步骤操作。
【参考方案1】:
请尝试以下代码从 mysql 读取数据。
hostname = ""
dbname = ""
jdbcPort =
jdbc_url = "jdbc:mysql://0:1/2".format(hostname, jdbcPort, dbname)
connectionProperties =
"user" : username,
"password" : password
query = "select * from table_name"
df = spark.read.jdbc(url=jdbc_url, dbtable=query, properties=connectionProperties)
df.show()
如果有帮助,请告诉我。
【讨论】:
我写了同样的代码。顺便说一句,得到同样的错误。以上是关于在 python 3 中使用 pyspark 从 MySql db 加载数据的主要内容,如果未能解决你的问题,请参考以下文章
在 zeppelin 中使用从 %pyspark 到 %python 的 Dataframe
我可以使用spark 2.3.0和pyspark从Kafka进行流处理吗?
如何使用 pyspark 从 python 列表中选择随机文本值?
在 spark 版本 2.2.0 中使用 python(pyspark) 从 mqtt 获取数据流