Ошибка записи в файл паркета с использованием pyspark - PullRequest
0 голосов
/ 16 апреля 2020

Я работаю над windows 10. Я установил spark, и цель - использовать pyspark. Я сделал следующие шаги:

  1. Я установил Python 3.7 с anaconda - Python был добавлен в C:\Python37
  2. Я загружаю wintils из this ссылка - winutils добавлен к C:\winutils\bin
  3. Я скачал spark - Искра была извлечена: C:\spark-3.0.0-preview2-bin-hadoop2.7
  4. Я скачал Java 8 из AdoptOpenJDK

в системных переменных, я устанавливаю следующие переменные:

  1. HADOOP_HOME: C:\winutils
  2. SPARK_HOME: C:\spark-3.0.0-preview2-bin-hadoop2.7
  3. JAVA_HOME: C:\PROGRA~1\AdoptOpenJDK\jdk-8.0.242.08-hotspot

И, наконец, в системном пути я добавил:

  1. % JAVA_HOME% \ bin
  2. % SPARK_HOME% \ bin
  3. % HADOOP_HOME% \ bin

В терминале:

enter image description here

enter image description here

Итак, я хотел бы знать, почему я получаю это предупреждение:

unable to load native-hadoop library... And why I couldn't bind on port 4040...

Наконец, внутри Jupyter Notebook, Я получаю следующую ошибку при попытке записи в файл Parquet. Это изображение показывает рабочий пример, а следующий показывает код с ошибками:

enter image description here

А вот DataMaster__3.csv на моем диске:

enter image description here

И DaterMaster_par2222.parquet:

enter image description here

enter image description here

Любая помощь очень ценится !!

1 Ответ

0 голосов
/ 17 апреля 2020

Если вы пишете файл в формате csv, я обнаружил, что лучший способ сделать это - использовать следующий подход

LCL_POS.toPandas().to_csv(<path>)

Существует другой способ сохранить его напрямую без преобразования в pandas но проблема в том, что в итоге он разбивается на несколько файлов (со странными именами, поэтому я стараюсь их избегать). Если вы счастливы разбить файл на части, на мой взгляд, лучше написать файл для паркета.

LCL_POS.repartition(1).write.format("com.databricks.spark.csv").option("header", "true").save(<path>)

Надеюсь, что ответ на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...