在 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 获取数据流

使用 Python 3 的 pyspark 中的 seed = 5L 返回语法错误

在databricks中使用cobrix处理大型机文件-Pyspark python 3