Ein Hinweis zum Ausführen von pyspark mit conda in einer lokalen Umgebung. Installieren und führen Sie pyspark wie jede andere beliebte Python-Bibliothek aus.
Hauptziel anzunehmen:
――Ich möchte eine Umgebung erstellen, die mit wenigen Schritten funktioniert und detaillierte Einstellungen außer Acht lässt.
――Es wäre gut, wenn Sie den Beispielcode von Online-Artikeln und Nachschlagewerken verschieben und Funktionen vorerst mithilfe kleiner Testdaten codieren und entwickeln könnten.
-Download von Official Site oder Mirror und PATH Es ist mühsam, Java über
und PYTHONPATH
usw. zu installieren.
Ich denke über die Situation nach.
Geben Sie die virtuelle Ziel-Conda-Umgebung ein und
conda install -c conda-forge pyspark=3.0 openjdk=8
#Hinweis: Python3.8 wird nicht unterstützt, daher Python 3.7.Verwenden Sie eine Umgebung wie x
conda install -c conda-forge pyspark=2.4 openjdk=8
Dann wird nicht nur die pyspark-Bibliothek, sondern auch Apache Spark selbst in der virtuellen Umgebung installiert. (Übrigens sind auch Pandas und Pyarrow enthalten, die die Datenverknüpfung zwischen Pandas und Spark übernehmen.)
** Zu diesem Zeitpunkt sollten Sie in der Lage sein, "pyspark" vorerst zu verwenden. ** ** **
Übrigens, wenn Sie openjdk mit conda wie im obigen Beispiel einfügen, wird beim Betreten der virtuellen Umgebung mit "conda activate" "JAVA_HOME" automatisch so eingestellt, dass es mit der mit conda eingegebenen übereinstimmt. (Wenn Sie über den Conda-Forge-Kanal eingeben, lautet die Version ab dem 14.08.2020 1.8.0_192 (Azul Systems, Inc.).)
conda enable <Name der virtuellen Umgebung>
und dann auf der CLI
Shell (Conda Umgebung)
$ pyspark
Python 3.8.5 (default, Aug 5 2020, 08:36:46)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
20/08/14 22:00:15 WARN Utils: Your hostname, <***> resolves to a loopback address: 127.0.1.1; using 192.168.3.17 instead (on interface wlp3s0)
20/08/14 22:00:15 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
20/08/14 22:00:15 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 3.0.0
/_/
Using Python version 3.8.5 (default, Aug 5 2020 08:36:46)
SparkSession available as 'spark'.
>>>
Shell (Conda Umgebung)
$ pyspark
Python 3.7.7 (default, May 7 2020, 21:25:33)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
20/08/14 22:16:09 WARN Utils: Your hostname, <***> resolves to a loopback address: 127.0.1.1; using 192.168.3.17 instead (on interface wlp3s0)
20/08/14 22:16:09 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
20/08/14 22:16:09 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 2.4.6
/_/
Using Python version 3.7.7 (default, May 7 2020 21:25:33)
SparkSession available as 'spark'.
>>>
Sie können überprüfen, ob "pyspark" für jeden wie folgt verwendet werden kann.
Darüber hinaus wird Java 11 auch von Spark 3 unterstützt, aber als ich es einfach ausprobierte, bekam ich einen speicherbezogenen Fehler und konnte es nicht zufriedenstellend verschieben. .. .. Selbst wenn Sie sich hier usw. ansehen, scheinen bei der Verwendung von Java 11 zusätzliche Einstellungen erforderlich zu sein (dies scheint sich von dem obigen Fehler zu unterscheiden). Wie der Titel schon sagt, ist es sicher, Spark 3 mit Java Version 8 zu verwenden, wenn Sie es mit "** vorerst einfach **" ausführen möchten. (Außerdem funktioniert es nur, wenn es sich um Java 8 in der Spark 2-Serie handelt.)
Die anständige Funktion funktioniert wie oben, aber standardmäßig tritt ein Fehler bei Berechtigungen auf, wenn die Datenbanktabelle von "spark.sql" betrieben wird. [Hier](https://qiita.com/tomotagwork/items/1431f692387242f4a636#apache-spark%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83% 88% E3% 83% BC% E3% 83% AB) usw.
winutils.exe
herunter (zB hier oder [hier ](Verfügbar im Repository unter https://github.com/cdarlint/winutils)PATH
setzenHADOOP_HOME
Muss zusätzlich gemacht werden.
Zu diesem Zeitpunkt sollten Sie in der Lage sein, pyspark problemlos auszuführen (** mit Standardeinstellungen **), aber manchmal müssen Sie die Konfiguration festlegen oder anpassen.
Wenn Sie es ernsthaft anpassen, wird es über den "einfachen" Bereich des Titels hinausgehen, aber ich werde es nur auf das Minimum ergänzen. (Ich werde allgemeine Geschichten weglassen, die nicht nur für Conda gelten, z. B. das Festlegen allgemeiner Umgebungsvariablen.)
Ich habe geschrieben, dass die Umgebungsvariable "JAVA_HOME" (erforderlich zum Ausführen von Spark) ohne Erlaubnis auf der Conda-Seite festgelegt wird, aber die Umgebungsvariable "SPARK_HOME", die häufig bei Verwendung von Apache Spark festgelegt wird, ist nicht tatsächlich festgelegt. (Es funktioniert relativ gut, auch wenn es nicht eingestellt ist, aber manchmal ist es ein Problem)
Sie können den Installationsort in der virtuellen Umgebung angeben, der Speicherort ist jedoch etwas schwer zu verstehen. Ich denke, es gibt verschiedene Möglichkeiten, dies zu tun, aber als persönliche Forschungsmethode
Zum Beispiel sieht es so aus:
shell
$ spark-shell
20/08/16 12:32:18 WARN Utils: Your hostname, <***> resolves to a loopback address: 127.0.1.1; using 192.168.3.17 instead (on interface wlp3s0)
20/08/16 12:32:18 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
20/08/16 12:32:19 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://192.168.3.17:4040
Spark context available as 'sc' (master = local[*], app id = local-1597548749526).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.0.0
/_/
Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_192)
Type in expressions to have them evaluated.
Type :help for more information.
scala> sc.getConf.get("spark.home")
res0: String = <Virtuelle Umgebung PFAD>/lib/python3.8/site-packages/pyspark
# ↑ `String = `Der absolute Pfad des Spark-Installationsorts wird im Teil von angezeigt
# `Ctrl-C`Beenden Sie mit und stellen Sie die Umgebungsvariablen wie folgt ein
$ export SPARK_HOME=<Virtuelle Umgebung PFAD>/lib/python3.8/site-packages/pyspark
Oder
Und so weiter. (Diese Methode basiert auf hier.)
Zum Beispiel "SPARK_HOME = / path / to / miniconda3-latest / envs /
Kurz gesagt, die Spark-Shell von scala setzt automatisch nur in der Spark-Sitzung das entsprechende "spark.home", aber aus irgendeinem Grund tut pyspark dies nicht. Es ist also so, als würde man mit der Spark-Shell prüfen.
Das "conf" -Verzeichnis existiert in Spark, das vom offiziellen usw. heruntergeladen wurde, aber es scheint, dass das "conf" -Verzeichnis nicht in dem von conda automatisch installierten Verzeichnis existiert. .. ..
Es scheint jedoch, dass wenn Sie ein "conf" -Verzeichnis an der entsprechenden Stelle erstellen und die Einstellungsdatei ablegen, diese gelesen wird. (Verifiziert mit spark-defaults.conf
)
Der Speicherort der Einstellungsdatei befindet sich unter "$ SPARK_HOME / conf /" unter Verwendung des zuvor überprüften Pfads "SPARK_HOME". So zum Beispiel
$SPARK_HOME/conf/spark-defaults.conf
Sie können die Konfiguration festlegen, indem Sie sie erstellen und ausfüllen.
Ich habe keine anderen Konfigurationsdateien ausprobiert (z. B. "conf / spark-env.sh"), aber ich denke, es wird funktionieren, wenn Sie auf die gleiche Weise erstellen und füllen. (Es tut mir leid, wenn es anders ist.)
Ich persönlich mag es nicht so sehr, weil das Ändern der einzelnen Pakete, die ich mit conda eingefügt habe, die Portabilität verringert und die Einstellungen verschmutzt (das "einfache" Element des Titels wird ausgeblendet). .. (Es ist eine Geschichte, dass Sie es tun können, wenn Sie es brauchen.)
Trotzdem denke ich, dass der Vorteil, die Einstellungen für jede virtuelle Umgebung unabhängig halten zu können, bestehen bleibt.
Ich habe bestätigt, dass pyspark einfach mit conda installiert und verwaltet werden kann und dass es möglich ist, die Einstellungsdatei anzupassen, wenn Sie Lust dazu haben.
Recommended Posts