Ошибка PyArrow OSError: [WinError 193] %1 не является допустимым приложением win32

#python-3.x #pyarrow #hadoop3

#python-3.x #pyarrow #hadoop3

Вопрос:

Моя ОС — 64-разрядная Windows 10, и я использую 64-разрядную версию Anaconda 3.8. Я пытаюсь разработать клиент файловой системы Hadoop 3.3 с модулем PyArrow. Установка PyArrow с conda в Windows 10 выполнена успешно.

 > conda install -c conda-forge pyarrow
  

Но подключение hdfs 3.3 с pyarrow выдает ошибки, подобные приведенным ниже,

 import pyarrow as pa
fs = pa.hdfs.connect(host='localhost', port=9000)
  

Ошибки

 Traceback (most recent call last):
  File "C:eclipse-workspacePythonFredProjcomaaafredhdfs3-test.py", line 14, in <module>
    fs = pa.hdfs.connect(host='localhost', port=9000)
  File "C:Python-3.8.3-x64libsite-packagespyarrowhdfs.py", line 208, in connect
    fs = HadoopFileSystem(host=host, port=port, user=user,
  File "C:Python-3.8.3-x64libsite-packagespyarrowhdfs.py", line 38, in __init__
    _maybe_set_hadoop_classpath()
  File "C:Python-3.8.3-x64libsite-packagespyarrowhdfs.py", line 136, in _maybe_set_hadoop_classpath
    classpath = _hadoop_classpath_glob(hadoop_bin)
  File "C:Python-3.8.3-x64libsite-packagespyarrowhdfs.py", line 163, in _hadoop_classpath_glob
    return subprocess.check_output(hadoop_classpath_args)
  File "C:Python-3.8.3-x64libsubprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "C:Python-3.8.3-x64libsubprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:Python-3.8.3-x64libsubprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:Python-3.8.3-x64libsubprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
OSError: [WinError 193] %1 is not a valid win32 application
  

Я устанавливаю Visual C 2015 в Windows 10. Но по-прежнему отображаются те же ошибки.

Комментарии:

1. Я решил это. Я много раз устанавливал и удалял anaconda на своей виртуальной машине, и я думаю, что это приведет к этим ошибкам. Я удалил все Windows 10 на виртуальной машине и снова создал виртуальную машину. И pyarrow работает без ошибок. Спасибо в любом случае.

2. Стоит ли писать ответ для будущих читателей, Джозеф? Или вы просто переустановили и не можете объяснить, почему это исправлено? Интересно, стоит ли закрывать этот вопрос.

Ответ №1:

Это мое решение.

  1. Перед запуском pyarrow на 64-разрядной версии Windows 10 должен быть установлен Hadoop 3. и путь установки должен быть указан в Path

  2. установите pyarrow 3.0 (версия важна. должно быть 3.0)

    pip install pyarrow == 3.0

  3. создайте модуль PyDev в перспективе eclipse PyDev. Примеры кодов, как показано ниже

    из pyarrow импортируйте fs

    hadoop = fs.HadoopFileSystem(«localhost», порт = 9000) print(hadoop.get_file_info(‘/’))

  4. выберите созданный вами модуль pydev и нажмите [Properties (Alt Enter)]

  5. Щелкните [Параметры запуска / отладки]. Выберите модуль pydev и кнопку [Редактировать]. введите описание изображения здесь

  6. В окне [Редактировать конфигурацию] выберите вкладку [Среда] введите описание изображения здесь

  7. Нажмите кнопку [Добавить]

  8. Вы должны создать 2 переменные среды. «CLASSPATH» и «LD_LIBRARY_PATH»

  1. ПУТЬ К КЛАССУ: в командной строке выполните следующую команду.
 hdfs classpath --glob
  

скопируйте возвращенные значения и вставьте их в текстовое поле Value (возвращенные значения представляют собой длинное строковое значение. но скопируйте их все)

введите описание изображения здесь

  1. LD_LIBRARY_PATH: вставьте путь к libhdfs.so файл на hadoop 3, в моем случае «C:hadoop-3.3.0libnative «в текстовое поле «Значение».

введите описание изображения здесь

введите описание изображения здесь

  1. Хорошо! установлена конфигурация pyarrow 3.0. Вы можете подключить hadoop 3.0 в Windows 10 eclipse PyDev.

Комментарии:

1. Если моя грамматика английского ужасна, пожалуйста, исправьте мои ошибки.