[PYTHON] Installez facilement pyspark avec conda

1. Contexte / objectif

Une note pour exécuter pyspark en utilisant conda dans un environnement local. Installez et exécutez pyspark comme n'importe quelle autre bibliothèque Python populaire.

Objectif principal à assumer:

――Je souhaite créer un environnement qui fonctionne en quelques étapes, en laissant de côté les paramètres détaillés. ―― Ce serait bien si vous pouviez déplacer l'exemple de code d'articles en ligne et de livres de référence, et coder et développer des fonctions à l'aide de données de test à petite échelle pour le moment. -Télécharger depuis Site officiel ou Mirror et PATH Il est difficile d'installer Java via ʻet PYTHONPATH`, et ainsi de suite.

Je pense à la situation.

2. Installez Spark et Java avec conda

Entrez dans l'environnement virtuel conda cible et

--Lors de l'utilisation d'Apache Spark 3.0

conda install -c conda-forge pyspark=3.0 openjdk=8

--Lors de l'utilisation d'Apache Spark 2.4

#Remarque: Python3.8 n'est pas pris en charge, donc Python 3.7.Utilisez un environnement tel que x
conda install -c conda-forge pyspark=2.4 openjdk=8

Ensuite, non seulement la bibliothèque pyspark mais aussi Apache Spark lui-même seront installés dans l'environnement virtuel. (À propos, pandas et pyarrow, qui gère la liaison de données entre les pandas et Spark, sont également inclus.)

** À ce stade, vous devriez pouvoir utiliser pyspark pour le moment. ** **

En passant, si vous insérez openjdk avec conda comme dans l'exemple ci-dessus, lorsque vous entrez dans l'environnement virtuel avec conda activate, JAVA_HOME sera automatiquement défini pour correspondre à celui entré avec conda. (Si vous entrez à partir du canal conda-forge, la version sera 1.8.0_192 (Azul Systems, Inc.) à partir du 14/08/2020.)

Courir

conda activate <nom de l'environnement virtuel> puis sur la CLI

shell (environnement conda)


$ 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 (environnement conda)


$ 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'.
>>> 

Vous pouvez vérifier que pyspark peut être utilisé pour chacun comme suit.

Supplément (Java)

De plus, Java 11 est également pris en charge à partir de Spark 3, mais lorsque je l'ai essayé facilement, j'ai eu une erreur liée à la mémoire et je n'ai pas pu le déplacer de manière satisfaisante. .. .. Même si vous regardez ici etc., il semble que des paramètres supplémentaires soient nécessaires lors de l'utilisation de Java 11 (cela semble être différent de l'erreur ci-dessus) Comme le titre l'indique, si vous voulez l'exécuter avec "** Facile pour le moment **", je pense qu'il est sûr d'utiliser Spark 3 avec la version 8 de Java. (De plus, cela ne fonctionne que s'il s'agit de Java 8 de la série Spark 2.)

Supplément (Windows)

La fonction décente fonctionne comme ci-dessus, mais par défaut, une erreur autour des autorisations se produit lors de l'utilisation de la table de base de données de spark.sql. [Ici](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), etc.

--Téléchargez le hadoop 2.7 winutils.exe (par exemple ici ou [ici ](Disponible depuis le référentiel à https://github.com/cdarlint/winutils) --Placez PATH --Définissez l'emplacement de téléchargement ci-dessus sur la variable d'environnement HADOOP_HOME

Besoin d'être fait en plus.

3. Si des paramètres supplémentaires sont nécessaires

À ce stade, vous devriez pouvoir exécuter pyspark facilement (** avec les paramètres par défaut **), mais vous devez parfois définir ou ajuster la configuration.

Si vous le personnalisez sérieusement, il ira au-delà de la gamme "facile" du titre, mais je ne le compléterai qu'au minimum. (Je vais omettre les histoires courantes qui ne sont pas uniques à conda, telles que la définition de variables d'environnement générales.)

Réglage de SPARK_HOME

J'ai écrit que la variable d'environnement JAVA_HOME (nécessaire pour exécuter Spark) est définie du côté conda sans autorisation, mais la variable d'environnement SPARK_HOME, qui est souvent définie lors de l'utilisation d'Apache Spark, n'est pas réellement définie. (Cela fonctionne relativement bien même s'il n'est pas réglé, mais parfois c'est un problème)

Vous pouvez spécifier l'emplacement d'installation dans l'environnement virtuel, mais l'emplacement est un peu difficile à comprendre. Je pense qu'il y a plusieurs façons de le faire, mais en tant que méthode de recherche personnelle,

  1. Si vous installez pyspark avec conda, vous pouvez également exécuter spark-shell, qui est le shell Spark de scala (il devrait être dans votre PATH), alors exécutez spark-shell sur la CLI
  2. Tapez sc.getConf.get (" spark.home ") et appuyez sur Entrée pour obtenir la chaîne qui apparaît et définissez-la dans la variable d'environnement SPARK_HOME

Par exemple, cela ressemble à ceci:

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 = <Environnement virtuel PATH>/lib/python3.8/site-packages/pyspark

# ↑ `String = `Le chemin absolu de l'emplacement d'installation de Spark est affiché dans la partie de
# `Ctrl-C`Quittez avec et définissez les variables d'environnement comme suit

$ export SPARK_HOME=<Environnement virtuel PATH>/lib/python3.8/site-packages/pyspark

Ou

  1. Exécutez spark-shell de la même manière
  2. Puisqu'il est censé s'exécuter localement, accédez à http: // localhost: 4040 après 1. et ouvrez l'interface utilisateur Spark.
  1. Notez le chemin dans spark.home sur l'onglet Environnement et définissez-le dans la variable d'environnement SPARK_HOME

Etc. (Cette méthode est basée sur here.) Par exemple, SPARK_HOME = / chemin / vers / miniconda3-latest / envs / <nom de l'environnement virtuel> / lib / python3.7 / site-packages / pyspark.

En bref, le spark-shell de scala définit automatiquement le spark.home approprié uniquement dans la session Spark, mais pour une raison quelconque, pyspark ne le fait pas, donc c'est comme vérifier avec spark-shell.

Emplacement du fichier de configuration

Le répertoire conf existe dans Spark téléchargé depuis le répertoire officiel, etc., mais il semble que le répertoire conf n'existe pas dans celui automatiquement installé par conda. .. .. Cependant, il semble que si vous créez un répertoire conf à l'endroit approprié et mettez le fichier de configuration, il sera lu. (Vérifié avec spark-defaults.conf)

L'emplacement du fichier de configuration sera sous $ SPARK_HOME / conf / en utilisant le chemin de SPARK_HOME que vous avez vérifié précédemment. Donc, par exemple

$SPARK_HOME/conf/spark-defaults.conf

Vous pouvez définir la configuration en créant et en remplissant des fichiers.

Je n'ai pas essayé d'autres fichiers de configuration (par exemple conf / spark-env.sh), mais je pense que cela fonctionnera si vous créez et remplissez de la même manière. (Je suis désolé si c'est différent.)

Personnellement, je ne l'aime pas beaucoup car la modification des packages individuels que j'ai mis avec conda rend les paramètres moins portables et moins sales (l'élément "facile" du titre s'estompe). .. (C'est une histoire que vous pouvez faire si vous en avez besoin.)

Cependant, même ainsi, je pense que le mérite de pouvoir conserver les paramètres indépendamment pour chaque environnement virtuel demeure.

Résumé

J'ai confirmé que pyspark peut être facilement installé et géré avec conda, et qu'il est possible de personnaliser le fichier de paramètres si vous en avez envie.

Recommended Posts

Installez facilement pyspark avec conda
Spécifiez la version avec l'installation de conda
Rendre avec la syntaxe facile
Comment installer python-pip avec ubuntu20.04LTS
Comment installer mysql-connector avec pip3
Dessinez facilement des graphiques avec matplotlib
Comment installer Anaconda avec pyenv
Comment installer DLIB avec 2020 / CUDA activé
Je veux installer Python avec PythonAnywhere
Comment installer zsh (avec la personnalisation .zshrc)
Comment installer python3 avec docker centos
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
Comment installer OpenGM sur OSX avec macports
Étapes pour installer votre propre bibliothèque avec pip
Easy Grad-CAM avec pytorch-gradcam
Comment installer Python
Convertir 202003 en 2020-03 avec les pandas
IoT facile pour démarrer avec Raspeye et MESH
Comment installer pip
[Introduction à WordCloud] Il est facile à utiliser même avec Jetson-nano ♬
Comment installer Archlinux
De Kafka à KSQL - Construction d'environnement facile avec docker
Flacon facile à utiliser
Très facile à installer SciPy sur Mac OS X
Comment installer python
Comment installer Caffe sur OS X avec macports
Erreur avec l'installation de pip
Un moyen facile de gratter avec Python en utilisant Google Colab
Un moyen simple de créer un module d'importation avec jupyter
Comment installer BayesOpt
Installez Voluptuous avec Python 2.5
Installer la diffusion de la torche avec PyTorch 1.7
Facile à utiliser SQLite3
Co-filtrage avec PySpark
Installez Python avec pyenv
Comment installer Nbextensions
Comment installer Prover9
Débogage facile avec ipdb
Installez scikit.learn avec pip
TopView facile avec OpenCV
Introduction facile au piratage domestique avec Raspberry Pi et discord.py
API Nifty Cloud facile à utiliser avec botocore et python
Comment installer NPI + envoyer un message à la ligne avec python
Comment installer Python2.7 python3.5 avec pyenv (sur RHEL5 CentOS5) (novembre 2016)
[Road to Intermediate Python] Installer des packages en masse avec pip
Étapes pour installer un package cloné Git localement avec pip
Déplacez ce que vous avez installé avec pip dans l'environnement conda
Après avoir installé pygame avec conda, installez Aucun module nommé police
Je veux installer le package de requirements.txt avec poésie
Comment installer Theano sur Mac OS X avec homebrew
[2020.8 dernière] Comment installer Python
Environnement toxique facile avec Jenkins
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Installer l'environnement Python avec Anaconda
Installation de Keras (utilisée par Anaconda)
Comment installer Tabpy 1.0 (version 2020-01)
Connectez-vous à Wikipedia avec Python
Publiez sur Slack avec Python 3