отправить задание pyspark с виртуальной средой с помощью livy в AWS EMR - PullRequest
0 голосов
/ 15 октября 2018

Я создал кластер EMR с приведенными ниже конфигурациями в соответствии с документацией AWS

https://aws.amazon.com/premiumsupport/knowledge-center/emr-pyspark-python-3x/

{
    "Classification": "livy-conf",
    "Properties": {
      "livy.spark.deploy-mode": "cluster",
      "livy.impersonation.enabled": "true",
      "livy.spark.yarn.appMasterEnv.PYSPARK_PYTHON": "/usr/bin/python3"
    }
  },

Когда я отправляю задание pyspark с помощью livy со следующим пост-запросом

```
payload = {
    'file': self.py_file,
    'pyFiles': self.py_files,
    'name': self.job_name,
    'archives': ['s3://test.test.bucket/venv.zip#venv', 's3://test.test.bucket/requirements.pip'],
    'proxyUser': 'hadoop',
    "conf": {
      "PYSPARK_PYTHON": "./venv/bin/python",
      "spark.yarn.appMasterEnv.PYSPARK_PYTHON": "./venv/bin/python",
      "spark.yarn.executorEnv.PYSPARK_PYTHON": "./venv/bin/python",
      "spark.yarn.appMasterEnv.VIRTUAL_ENV": "./venv/bin/python",
      "spark.yarn.executorEnv.VIRTUAL_ENV": "./venv/bin/python",
      "livy.spark.yarn.appMasterEnv.PYSPARK_PYTHON": "./venv/bin/python",
      "livy.spark.yarn.appMasterEnv.PYSPARK_PYTHON": "./venv/bin/python",
      "spark.pyspark.virtualenv.enabled": "true",
      "spark.pyspark.virtualenv.type": "native",
      "spark.pyspark.virtualenv.requirements": "s3://test.test.bucket/requirements.pip",
      "spark.pyspark.virtualenv.path": "./venv/bin/python"
     }
}

```

Я получаю следующее сообщение об ошибке:

```
Log Type: stdout
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Current thread 0x00007efc72b57740 (most recent call first)
```

Я также пытался изменить PYTHONHOME PYTHONPATH на родительскую папку bin-файла python в виртуальной среде, ноничего не работает.

```
"spark.yarn.appMasterEnv.PYTHONPATH": "./venv/bin/",
"spark.yarn.executorEnv.PYTHONPATH": "./venv/bin/",
"livy.spark.yarn.appMasterEnv.PYTHONPATH": "./venv/bin/",
"livy.spark.yarn.executorEnv.PYTHONPATH": "./venv/bin/",
#
"spark.yarn.appMasterEnv.PYTHONHOME": "./venv/bin/",
"spark.yarn.executorEnv.PYTHONHOME": "./venv/bin/",
"livy.spark.yarn.appMasterEnv.PYTHONHOME": "./venv/bin/",
"livy.spark.yarn.executorEnv.PYTHONHOME": "./venv/bin/",
```

Ошибка:

Fatal Python error: Py_Initialize: Unable to get the locale encoding ImportError: No module named 'encodings' Current thread 0x00007f7351d53740 (most recent call first):

Вот как я создал виртуальную среду

```
python3 -m venv venv/
source venv/bin/activate
python3 -m pip install -r requirements.pip
deactivate
pushd venv/
zip -rq ../venv.zip *
popd
```

структура виртуальной среды:

drwxrwxr-x  2   4096 Oct 15 12:37 bin/
drwxrwxr-x  2   4096 Oct 15 12:37 include/
drwxrwxr-x  3   4096 Oct 15 12:37 lib/
lrwxrwxrwx  1      3 Oct 15 12:37 lib64 -> lib/
-rw-rw-r--  1     59 Oct 15 12:37 pip-selfcheck.json
-rw-rw-r--  1     69 Oct 15 12:37 pyvenv.cfg
drwxrwxr-x  3   4096 Oct 15 12:37 share/

bin dir:

activate  activate.csh  activate.fish  chardetect  easy_install  easy_install-3.5  pip  pip3  pip3.5  python  python3

lib dir:

python3.5/site-packages/

Поддержка AWS говорит, что это постоянная ошибка.

https://issues.apache.org/jira/browse/SPARK-13587

https://issues.apache.org/jira/browse/ZEPPELIN-2233

Есть предложения?

Спасибо!

...