如何在 IBM 的数据科学体验中从 pyspark 访问 postgres 表?

Posted

技术标签:

【中文标题】如何在 IBM 的数据科学体验中从 pyspark 访问 postgres 表?【英文标题】:How do I access a postgres table from pyspark on IBM's Data Science Experience? 【发布时间】:2017-02-14 00:55:03 【问题描述】:

这是我的代码:

uname = "xxxxx" 
pword = "xxxxx" 
dbUrl = "jdbc:postgresql:dbserver" 
table = "xxxxx"
jdbcDF = spark.read.format("jdbc").option("url", dbUrl).option("dbtable",table).option("user", uname).option("password", pword).load()

添加 postgres 驱动程序 jar (%Addjar -f https://jdbc.postgresql.org/download/postgresql-9.4.1207.jre7.jar) 后,我收到“没有合适的驱动程序”错误。是否有从 DSX 上的 pyspark 2.0 中的 postgres 加载数据的工作示例?

【问题讨论】:

【参考方案1】:

请使用 pixiedust 包管理器在 spark 服务级别安装 postgres 驱动程序。

http://datascience.ibm.com/docs/content/analyze-data/Package-Manager.html

由于 Pixiedust 仅支持 spark 1.6 ,运行

pixiedust.installPackage("https://jdbc.postgresql.org/download/postgresql-9.4.1207.jre7.jar")

一旦你安装了这个,重启内核然后 切换到 spark 2.0 运行您的 postgres 连接以使用 sparksession 获取 spark 数据帧。

uname = "username"

pword = "xxxxxx"

dbUrl = "jdbc:postgresql://hostname:10635/compose?user="+uname+"&password="+pword

table = "tablename"

Df = spark.read.format('jdbc').options(url=dbUrl,database='compose',dbtable=table).load()

houseDf.take(1)

工作笔记本:-

https://apsportal.ibm.com/analytics/notebooks/8b220408-6fc7-48a9-8350-246fbbf10ac8/view?access_token=7297af80b2e4109087a78365e7df3205f6ed9d0840c0c46d2208bc00ed0b0274

谢谢, 查尔斯。

【讨论】:

【参考方案2】:

只需提供驱动选项

option("driver", "org.postgresql.Driver")

【讨论】:

你有我如何在数据科学体验中的笔记本上执行此操作的示例吗?

以上是关于如何在 IBM 的数据科学体验中从 pyspark 访问 postgres 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中从 pySpark 添加 SparkListener?

在 Pyspark 中从 Rest Api 创建数据框时出错

在 pyspark 中从另一个数据库加载表

如何以正确的格式以科学记数法显示 PySpark 数据框中的列

有啥方法可以让我在一个 pyspark 脚本中从 10 个不同的模式中提取数据?

如何在pyspark中关闭科学记数法?