带有 zip 包的 Spark-submit 会在 psycopg2-binary 等本机模块上引发错误

问题描述 投票:0回答:1

我正在 pyspark 上开发一些基本的 Spark 作业。 Spark 作业利用通用 Python 进行实用程序和数据更新插入。为了允许本地测试,我将 python 模块打包为 zip 包。 zip包是通过requirements.txt文件构建的,如下所示

buildzip:

    poetry export -f requirements.txt --without-hashes -o requirements.txt
    poetry run pip install --use-feature=in-tree-build . -r requirements.txt -t package_tmp
    cd package_tmp && find . -name "*.pyc" -delete && zip -r "test_package" . && cd .. && cp package_tmp/test_package.zip dist/ && rm -r package_tmp

输出的zip包

test_package.zip
在本地spark-submit中使用如下

spark-submit --py-files dist/test_package.zip /<path>/job.py

除了我需要使用

psycopg2-binary = "^2.9.2"
访问数据库的地方之外,上述过程工作正常。我收到错误了。

ModuleNotFoundError: No module named 'psycopg2._psycopg'

据我了解,此错误是由于将本机模块打包在 zip 文件夹中造成的。不幸的是,本地的

spark-submit
不接受
whl
套餐。

如何将这些本机模块打包在 zip 下,以便在本地测试我的 Spark 作业?

python apache-spark pyspark python-packaging
1个回答
0
投票

在文档中找到它 https://spark.apache.org/docs/latest/api/python/user_guide/python_packaging.html

您必须使用 --archive 选项来添加使用 venv-pack 打包的环境。经过几个小时的搜索后,这对我有用

© www.soinside.com 2019 - 2024. All rights reserved.