gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:09:34 26 4
gpt4 key购买 nike

我想在 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 connection to Postgres database in ipython notebook

注意:我使用的是 Spark 2.3.1 和 Python 3.6.3,如果指定 jar 位置,我就可以从 pyspark shell 连接到数据库。

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

感谢任何能在这方面帮助我的人。

编辑

来自 How to load jar dependenices in IPython Notebook 的回答已在我自己分享的链接中列出,并且对我不起作用。我已经尝试从笔记本配置环境变量:

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)

关于python - 在 jupyter 笔记本中使用 pyspark 时如何指定驱动程序类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51772350/

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