【发布时间】:2021-07-07 18:14:13
【问题描述】:
我是 docker 和 python spark 的初学者,我正在尝试一些 spark 示例,从本地 PostgreSQL 数据库中提取数据。我在运行 LTS Ubuntu 20.04 的 Windows 10 机器上进行了本地试验。我的 docker-compose 版本是 1.28。 但是,我一直遇到同样的问题,如何将某某驱动程序添加到我的 docker 映像中。在这种情况下,它是 postgresql jdbc 驱动程序。我的问题与this question 非常相似。但是,我使用的是 docker-compose 而不是普通的 docker。
这里是 all-spark-notebook 映像的 docker-compose 部分:
services:
spark:
image: jupyter/all-spark-notebook:latest
ports:
- "8888:8888"
working_dir: /home/$USER/work
volumes:
- $PWD/work:/home/$USER/work
environment:
PYSPARK_SUBMIT_ARGS: --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.1.1 --jars /usr/share/java/postgresql.jar pyspark-shell
packages 条目是让我的 kafka 集成在 jupyter 中工作所必需的(它确实如此)。 --jars 条目是我尝试使用以下方法引用安装在 ubuntu LTS 终端中的 postgresql jdbc 驱动程序:
sudo apt-get install libpostgresql-jdbc-java libpostgresql-jdbc-java-doc
在python中,我试过这个:
conf = SparkConf()
conf.set("spark.jars", "/usr/share/java/postgresql.jar")
findspark.init()
spark = SparkSession \
.builder \
.config(conf=conf) \
.appName("My App") \
.getOrCreate()
dataframe = spark.read.format('jdbc').options(\
url = "jdbc:postgresql://host.docker.internal:5432/postgres?user=user&password=***",\
database='postgres',
dbtable='cloud.some-table'
).load()
dataframe.show()
但是,我收到以下错误消息:
java.sql.SQLException:没有合适的驱动程序
就像引用的以前的海报一样。
有什么想法吗?这应该很容易,但我很挣扎。
【问题讨论】:
标签: postgresql jdbc pyspark docker-compose