Есть два дистрибутива с веб-страницы spark. Один с хаупом, другой без.
Я использую python для кодирования искры, поэтому я установил искру через pip. Я полагаю, что дистрибутив, загруженный pip, должен быть таким же, как сборка с hadoop, доступная на веб-сайте spark, поскольку они оба содержат одинаковый набор jar-файлов.
Непонятная проблема возникает, когда я пытаюсь создать sparksession .master('local[*]')
с этой конфигурацией .config('spark.jars.packages', 'org.apache.hudi:hudi-spark3.3-bundle_2.12:0.13.0')
.
Если я использую искровую сборку с Hadoop, все работает отлично. Загружены банки, создана искровая сессия....
Но когда я использую версию pip, возникает эта ошибка java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset
, и мне не удалось создать сеанс искры....
Проблему можно решить, установив переменную среды HADOOP_HOME
, я пробовал, и это работает. Я просто не могу объяснить разницу в их поведении... Когда я использую Spark со сборкой hadoop, мне просто нужно добавить в переменную PATH
и ничего HADOOP_PATH
не требуется. Но это не так, когда я использую версию pip — мне нужно установить HADOOP_PATH
, чтобы все заработало.
я использую окно, и в папке hadoop_path есть несколько двоичных файлов (winutils.exe/hadoop.dll), которых нет в искре с дистрибутивом hadoop.
Я думал, что разница между искрой с хаупом и искрой без распределения хаупа заключалась в том, что не хватало какой-то банки хаупа. Правильно ли я понимаю?
Я предполагаю, что дистрибутив, загруженный pip, должен быть таким же, как сборка с помощью hadoop
Это не. Как написано на странице PyPi для PySpark, он не поставляется с Hadoop.
Эта упакованная на Python версия Spark подходит для взаимодействия с существующим кластером (будь то автономный Spark, YARN или Mesos), но не содержит инструментов, необходимых для настройки собственного автономного кластера Spark.
Ваша проблема в основном связана с тем, что Hudi полагается на библиотеки Hadoop, а не на сам Spark.
winutils.exe/hadoop.dll) в папке hadoop_path, которых нет в искре с дистрибутивом hadoop.
Правильно, потому что Hadoop создается и распространяется только для систем Linux. Пользователям Mac и Windows потребуются дополнительные шаги установки.
Я считаю, что это правильно. Spark действительно нужен только путь к классам Java, а не сценарии для настройки Hadoop. Версия «без hadoop» и pyspark предполагает, что команда hadoop classpath
уже работает
просто хочу подтвердить, что разница между искрой с Hadoop и без Hadoop заключается только в банках Hadoop? После поиска в Интернете я чувствую, что версия с HADOOP на самом деле не содержит установки Hadoop. Он просто содержит еще несколько банок