在jupyter笔记本中使用pyspark时如何指定驱动程序类路径?

克鲁

我想在jupyter笔记本中使用pyspark查询PostgreSQL。我浏览了关于StackOverflow的很多问题,但是它们对我都不起作用,主要是因为答案似乎过时了。这是我的最小代码:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
url = 'jdbc:postgresql://host/dbname'
properties = {'user': 'username', 'password': 'pwd'}
df = spark.read.jdbc(url=url, table='tablename', properties=properties)

从笔记本运行此命令将引发以下错误:

Py4JJavaError: An error occurred while calling o69.jdbc.
: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:315)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$7.apply(JDBCOptions.scala:85)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$7.apply(JDBCOptions.scala:85)
at scala.Option.getOrElse(Option.scala:121)...

我发现的主要技巧在下面的链接中进行了总结,但是很遗憾,我无法在笔记本中使用这些技巧:

Pyspark连接到ipython Notebook中的Postgres数据库

注意:我正在使用Spark 2.3.1和Python 3.6.3,并且如果指定jar位置,则可以从pyspark shell连接到数据库。

pyspark --driver-class-path /home/.../postgresql.jar --jars /home/.../jars/postgresql.jar

感谢任何可以在这一方面帮助我的人。

编辑

我共享的链接中已经列出了如何在IPython Notebook加载jar依赖项的答案,这些答案对我不起作用。我已经尝试从笔记本配置环境变量:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--driver-class-path /path/to/postgresql.jar --jars /path/to/postgresql.jar'

文件路径或文件本身没有任何问题,因为当我指定它并运行pyspark-shell时,它可以正常工作。

克鲁

使用config对我有用的方法:

from pyspark.sql import SparkSession
spark = SparkSession.builder.config('spark.driver.extraClassPath', '/path/to/postgresql.jar').getOrCreate()
url = 'jdbc:postgresql://host/dbname'
properties = {'user': 'username', 'password': 'pwd'}
df = spark.read.jdbc(url=url, table='tablename', properties=properties)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在jupyter笔记本中使用opencv时出错:

如何在conda环境中使用Jupyter笔记本?

如何构建在jupyter笔记本中使用的GUI?

在笔记本电脑上使用双显示器时,屏幕闪烁,然后驱动程序崩溃

nvidia驱动程序在optimus笔记本电脑上登录时导致黑屏

我的笔记本电脑的驱动程序

在Jupyter笔记本中使用wordcloud时出现“ DLL加载失败:找不到指定的模块”错误

如何禁用笔记本电脑的触摸板驱动程序?

如何为HP笔记本电脑安装Bang和Olufsen音频驱动程序?

我如何知道要在OEM笔记本电脑上安装哪些驱动程序

如何在Optimus笔记本电脑上安装nvidia图形驱动程序?

无法在Optimus笔记本电脑上使用nvidia卡/驱动程序

使用Nvidia驱动程序时未检测到笔记本电脑内部屏幕

如何指定Jupyter笔记本电脑的运行路径?

在Jupyter笔记本上使用pyspark.sql.function时出错

在pycharm中使用jupyter笔记本-没有这样的笔记本目录

如何同时使用耳机和笔记本电脑扬声器。我有conexant驱动程序而不是Realtek

在降价 Jupyter 笔记本中使用输出

在jupyter笔记本中使用bash_profile别名

在R jupyter笔记本中使用ipython魔术吗?

在 Jupyter 笔记本中使用 Python 从 github 导入数据

在colaboratory中使用jupyter笔记本快捷方式

在 Jupyter 笔记本环境中使用“地图”对象

如何在装有Ubuntu的笔记本电脑上安装和启用无线驱动程序?

我如何获得Acer V5 571-g笔记本电脑Ubuntu 13.04的驱动程序

如何在没有驱动程序CD的笔记本电脑上重新安装Windows 7?

如何找到LG 15U560-KA51K笔记本电脑的SATA驱动程序?

如何为笔记本电脑中不受支持的触摸板编写驱动程序?

如何在RHEL WS 6.4中为笔记本电脑找到新的驱动程序?