[PYTHON] Einfach pyspark mit conda installieren

1. Hintergrund / Ziel

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.

2. Installieren Sie Spark und Java mit conda

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.).)

Lauf

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.

Ergänzung (Java)

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.)

Ergänzung (Windows)

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.

Muss zusätzlich gemacht werden.

3. Wenn zusätzliche Einstellungen erforderlich sind

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.)

SPARK_HOME einstellen

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

  1. Wenn Sie pyspark mit conda installieren, können Sie auch "spark-shell" ausführen, die Spark-Shell von "scala" (sie sollte sich auch in Ihrem PATH befinden). Führen Sie also "spark-shell" auf der CLI aus.
  2. Geben Sie "sc.getConf.get (" spark.home ")" ein und drücken Sie die Eingabetaste, um die angezeigte Zeichenfolge abzurufen und in der Umgebungsvariablen "SPARK_HOME" festzulegen

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

  1. Führen Sie "Spark-Shell" auf die gleiche Weise aus
  2. Da es lokal ausgeführt werden soll, greifen Sie nach 1. auf http: // localhost: 4040 zu und öffnen Sie die Spark-Benutzeroberfläche.
  1. Notieren Sie sich den Pfad in "spark.home" auf der Registerkarte "Umgebung" und legen Sie ihn in der Umgebungsvariablen "SPARK_HOME" fest

Und so weiter. (Diese Methode basiert auf hier.) Zum Beispiel "SPARK_HOME = / path / to / miniconda3-latest / envs / / lib / python3.7 / site-packages / pyspark".

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.

Speicherort der Konfigurationsdatei

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.

Zusammenfassung

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

Einfach pyspark mit conda installieren
Geben Sie die Version mit conda install an
Machen Sie es mit der Syntax einfach
So installieren Sie Python-Pip mit Ubuntu20.04LTS
So installieren Sie den MySQL-Connector mit pip3
Zeichnen Sie einfach Diagramme mit matplotlib
So installieren Sie Anaconda mit pyenv
So installieren Sie DLIB mit aktiviertem 2020 / CUDA
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
So installieren Sie zsh (mit .zshrc-Anpassung)
So installieren Sie Python3 mit Docker Centos
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
So installieren Sie OpenGM unter OSX mit Macports
Schritte zum Installieren Ihrer eigenen Bibliothek mit pip
Easy Grad-CAM mit Pytorch-Gradcam
So installieren Sie Python
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Einfaches IoT, um mit Raspeye und MESH zu beginnen
So installieren Sie pip
[Einführung in Word Cloud] Einfache Verwendung mit Jetson-nano ♬
So installieren Sie archlinux
Von Kafka bis KSQL - Einfache Umgebungskonstruktion mit Docker
Einfach zu bedienende Flasche
Sehr einfach, SciPy unter Mac OS X zu installieren
So installieren Sie Python
So installieren Sie caffe unter OS X mit Macports
Fehler bei der Pip-Installation
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
So installieren Sie BayesOpt
Installieren Sie Voluptuous mit Python 2.5
Installieren Sie Fackelstreuung mit PyTorch 1.7
Einfach zu bedienendes SQLite3
Co-Filterung mit PySpark
Installieren Sie Python mit pyenv
So installieren Sie Nbextensions
So installieren Sie Prover9
Einfaches Debuggen mit ipdb
Installieren Sie scikit.learn mit pip
Einfache TopView mit OpenCV
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
So installieren Sie NPI + Senden Sie eine Nachricht an Python
So installieren Sie Python2.7 python3.5 mit pyenv (unter RHEL5 CentOS5) (2016 Nov)
[Road to Intermediate Python] Installieren Sie Pakete in großen Mengen mit pip
Schritte zum lokalen Installieren eines geklonten Git-Pakets mit pip
Verschieben Sie das, was Sie mit pip installiert haben, in die Conda-Umgebung
Nach der Installation von pygame mit conda installiere kein Modul mit dem Namen font
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
So installieren Sie Theano unter Mac OS X mit Homebrew
[Neueste Version 2020.8] So installieren Sie Python
Einfache toxische Umgebung mit Jenkins
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Installieren Sie die Python-Umgebung mit Anaconda
Keras-Installation (von Anaconda verwendet)
So installieren Sie Tabpy 1.0 (Version 2020-01)
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3