Virtualenv в aws emr без сервера

Я пытаюсь запустить некоторые задания на aws cli, используя виртуальную среду, в которой я установил некоторые библиотеки. Я следовал этому руководству ; то же самое здесь . Но когда я запускаю задание, у меня есть эта ошибка:

      Job execution failed, please check complete logs in configured logging destination. ExitCode: 1. Last few exceptions: Caused by: java.io.IOException: error=2, No such file or directory Exception in thread "main" java.io.IOException: Cannot run program "./environment/bin/python"

я тоже пробовал/home/hadoop/environment/bin/pythonкак путь, но я получаю тот же результат. Мои рабочие конфы:

      --conf spark.archives=s3://mybucket/dependencies/myenv.tar.gz#environment --conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=./environment/bin/python --conf spark.emr-serverless.executorEnv.PYSPARK_PYTHON=./environment/bin/python

Если я бегу на работу

      os.listdir("./environment/bin/)

Результат

      ['python3.9', 'pip', 'pip3.9', 'rst2xetex.py', 'rstpep2html.py', 'f2py3', 'rst2latex.py', 'f2py', 'rst2odt.py', 'rst2html4.py', 'pip3', 'aws', 'python3', 'jp.py', 'rst2odt_prepstyles.py', 'pyrsa-encrypt', 'activate', 'rst2man.py', 'pyrsa-priv2pub', 'python', 'pyrsa-keygen', 'pyrsa-verify', 'rst2html.py', 'aws_completer', 'f2py3.9', 'venv-pack', 'rst2pseudoxml.py', 'aws_bash_completer', 'aws_zsh_completer.sh', 'aws.cmd', 'rst2s5.py', 'rst2xml.py', 'pyrsa-decrypt', 'rst2html5.py', 'Activate.ps1', '__pycache__', 'pyrsa-sign']

Так что путь должен быть правильным. Я также попытался установить PYSPARK_DRIVER_PYTHON внутри скрипта как

      os.environ['PYSPARK_PYTHON'] = "./environment/bin/python"
os.environ['PYSPARK_DRIVER_PYTHON'] = "./environment/bin/python"

Но в этом случае ошибка возникает, когда я импортирую библиотеки, которые я установил в virtualenv, поэтому он запускает скрипт со стандартным python.

Вы можете помочь мне?

1 ответ

Проблема в том, что вы, вероятно, не использовали Amazon Linux 2 для создания файла venv. Использование Amazon Linux и Python 3.7.10 помогло мне.

Как подробно описано здесь, вы можете использовать аналогичный этому файлу докера для создания такого файла venv. вам лучше использоватьrequirements.txtчтобы сделать его более многоразовым, но это дает вам идею.

      FROM --platform=linux/amd64 amazonlinux:2 AS base

RUN yum install -y python3

ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

RUN python3 -m pip install --upgrade pip && \
    python3 -m pip install \
    great_expectations==0.15.6 \
    venv-pack==0.2.0

RUN mkdir /output && venv-pack -o /output/pyspark_ge.tar.gz

FROM scratch AS export
COPY --from=base /output/pyspark_ge.tar.gz /
Другие вопросы по тегам