Ошибка при запуске файла Python Flink с ошибкой "Версии Python до 3.5 не поддерживаются для PyFlink"

Добавлено 1 мая:
я заметил проблему с этой ошибкой в ​​jira apache-flink, может быть, это поможет?


Моя система - CentOS7, версия python 3.6.8, версия pyflink 1.10.0;
Я следую этому руководству и пытаюсь запустить файл pyflink; но я постоянно получаю ошибку ниже;
Я пытался запустить его с параметрами -pyarch и -pyexec venv.zip/venv/bin/python3, но это бесполезно.
Я также добавляю t_env.get_config(). Set_python_executable("python3") в py-файл, но с той же ошибкой:

[root@localhost pyflink]# flink run -m  localhost:8081  -pyarch venv.zip -pyexec venv.zip/venv/bin/python3  -py test_split_label.py 
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/root/wyl/test_file/pyflink/test_split_label.py", line 58, in <module>
    from pyflink.datastream import StreamExecutionEnvironment
  File "/tmp/pyflink/89713583-7229-4c30-93c9-4d543c360437/bd1f0746-4704-44e2-ba9e-3ef2bea03354pyflink.zip/pyflink/__init__.py", line 23, in <module>
RuntimeError: Python versions prior to 3.5 are not supported for PyFlink [sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0)].
org.apache.flink.client.program.OptimizerPlanEnvironment$ProgramAbortException
    at org.apache.flink.client.python.PythonDriver.main(PythonDriver.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:321)
    at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:205)
    at org.apache.flink.client.ClientUtils.executeProgram(ClientUtils.java:138)
    at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:664)
    at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:213)
    at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:895)
    at org.apache.flink.client.cli.CliFrontend.lambda$main$10(CliFrontend.java:968)
    at org.apache.flink.runtime.security.NoOpSecurityContext.runSecured(NoOpSecurityContext.java:30)
    at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:968)

моя версия python по умолчанию была установлена ​​на Python3.6:

[root@localhost pyflink]# python
Python 3.6.8 (default, Aug  7 2019, 17:28:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=6, micro=8, releaselevel='final', serial=0)

Кажется, я должен установить какую-то переменную окружения? но я не знаю, какое имя и путь мне задать. Теперь у меня есть $FLINK_HOME.
Любая помощь приветствуется.

2 ответа

Это потому, что среда Python на клиентской стороне, которую вы используете, - 2.7. Что за APIset_python_executabledo устанавливает исполняемый файл python на стороне кластера. Итак, если ваша версия PyFlink 1.10, вам необходимо использовать virtualenv со средой Python 3.5+, и вы можете обратиться к документу https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/python/common_questions.html. В PyFlink 1.11 вы можете напрямую настроитьPYFLINK_CLIENT_EXECUTABLE чтобы указать исполняемый файл python на стороне клиента.

      ./bin/flink run
      -pyclientexec venv.zip/venv/bin/python3 \
      -pyexec venv.zip/venv/bin/python3 \
      -py shipfiles/word_count.py

Я следовал этому руководству, все в порядке https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/cli/

Другие вопросы по тегам