ModuleNotFoundError:Dataproc Serverless Pyspark作业中没有名为“elasticsearch”的模块

lawou6xi  于 2023-04-29  发布在  Spark
关注(0)|答案(2)|浏览(270)

我尝试在Dataproc Serverless Spark pyspark作业中使用ElasticSearch包。我只在Dataproc Serverless中遇到这个包的问题。

import os
print("Current dir:", os.getcwd())
print("Current dir list:", os.listdir('.'))
 
import pandas
import statsmodels
import platform
import numpy
 
print("Python version:", platform.python_version())
print("Pandas version:", pandas.__version__)
print("statsmodel version:", statsmodels.__version__ )
print("Numpy version:", numpy.__version__)

#import elasticsearch as es
from elasticsearch import Elasticsearch as es
print("elasticsearch version:", es.__version__ )

下面是这段代码的输出。

Current dir: /tmp/srvls-batch-7554fe27-4044-4341-ae79-ffe9488ea385
Current dir list: ['pyspark_venv.tar.gz', '.test_sls.py.crc', 'test_sls.py']
Python version: 3.9.15
Pandas version: 1.4.4
statsmodel version: 0.13.5
Numpy version: 1.21.6
Traceback (most recent call last):
  File "/tmp/srvls-batch-7554fe27-4044-4341-ae79-ffe9488ea385/test_sls.py", line 16, in <module>
    from elasticsearch import Elasticsearch as es
ModuleNotFoundError: No module named 'elasticsearch'

我按照下面的步骤来设置venv的这项工作,
https://spark.apache.org/docs/latest/api/python/user_guide/python_packaging.html#using-virtualenv
并使用--archives选项。有没有人可以纠正我,如果我错过了什么。先谢谢你了

f87krz0w

f87krz0w1#

当提供自定义Python env(通过--archives或容器镜像)时,您需要配置Spark来使用它,而不是默认的。
为此,您需要设置PYSPARK_PYTHON env var,使其指向自定义Python env中的Python二进制文件。
它可以在容器镜像脚本中完成,也可以通过Spark属性完成:

  • spark.dataproc.driverEnv.PYSPARK_PYTHON=...
  • spark.executorEnv.PYSPARK_PYTHON=...
qkf9rpyu

qkf9rpyu2#

ModuleNotFoundError: No module named 'elasticsearch'的常见原因是elasticsearch没有正确安装。您可以使用pip install安装elasticsearch库,也可以使用pip install更新您的pip。

$ pip install elasticsearch
$ python -m pip install --upgrade pip

还添加import elasticsearch

相关问题