Nombre de mots avec Apache Spark et python (Mac OS X)

Aperçu

Comme première étape de la vérification d'Apache Spark. Comme le savent bien tous ceux qui ont de l'expérience avec Hadoop, c'est celui qui compte les mêmes mots dans le fichier. L'environnement est Mac OSX, mais je me demande s'il en est presque de même pour Linux. Le code complet est ici.

Installation

$ brew install apache-spark

Confirmation d'installation

OK si Spark-Shell fonctionne et que `` scala> '' est affiché

$ /usr/local/bin/spark-shell
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Using Spark's repl log4j profile: org/apache/spark/log4j-defaults-repl.properties
To adjust logging level use sc.setLogLevel("INFO")
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.1
      /_/

Using Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45)
Type in expressions to have them evaluated.
Type :help for more information.
Spark context available as sc.
16/04/07 16:44:47 WARN Connection: BoneCP specified but not present in CLASSPATH (or one of dependencies)
16/04/07 16:44:47 WARN Connection: BoneCP specified but not present in CLASSPATH (or one of dependencies)
16/04/07 16:44:51 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
16/04/07 16:44:51 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
16/04/07 16:44:53 WARN Connection: BoneCP specified but not present in CLASSPATH (or one of dependencies)
16/04/07 16:44:53 WARN Connection: BoneCP specified but not present in CLASSPATH (or one of dependencies)
16/04/07 16:44:56 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
16/04/07 16:44:56 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
SQL context available as sqlContext.

scala>

Essayez le comptage de mots des fichiers locaux avec python

Ceci a été écrit en référence à la description sur le Site officiel.

Structure du répertoire

Veuillez préparer comme suit.

$ tree
.
├── input
│   └── data #Texte à lire
└── wordcount.py #Script d'exécution

1 directory, 4 files

Ecrire le code

Ici, nous utilisons python. Vous pouvez écrire en scala ou en Java. Je suis bon, alors allons-y. Comme ça.

wordcount.py


#!/usr/bin/env python
# coding:utf-8

from pyspark import SparkContext

def execute(sc, src, dest):
    '''
Effectuer le comptage des mots
    '''
    #Lire le fichier src
    text_file = sc.textFile(src)
    counts = text_file.flatMap(lambda line: line.split(" ")) \
                 .map(lambda word: (word, 1)) \
                 .reduceByKey(lambda a, b: a + b)
    #Exporter les résultats
    counts.saveAsTextFile(dest)

if __name__ == '__main__':
    sc = SparkContext('local', 'WordCount')
    src  = './input'
    dest = './output'
    execute(sc, src, dest)

Lire la préparation du fichier

De manière appropriée. Par exemple, comme ça.

./input/data


aaa
bbb
ccc
aaa
bbbb
ccc
aaa

Courir

La commande suivante.

$ which pyspark
/usr/local/bin/pyspark

#Courir
$ pyspark ./wordcount.py

Lorsque vous l'exécutez, un journal coulera. (Comme le streaming Hadoop)

Vérification

./output/part-00000


(u'aaa', 3)
(u'bbbb', 1)
(u'bbb', 1)
(u'ccc', 2)

Il a été correctement compté.

prime

Notez que si le répertoire de destination de sortie (./output) a déjà été généré, le processus suivant échouera. C'est une bonne idée d'attacher un shell comme celui ci-dessous au même répertoire.

exec.sh


#!/bin/bash

rm -fR ./output
/usr/local/bin/pyspark ./wordcount.py

echo ">>>>> result"
cat ./output/*
$ sh exec.sh
・ ・ ・
>>>>> result
(u'aaa', 3)
(u'bbbb', 1)
(u'bbb', 1)
(u'ccc', 2)

Recommended Posts

Nombre de mots avec Apache Spark et python (Mac OS X)
Installez lp_solve sur Mac OSX et appelez-le avec python.
Python3 + Django ~ Mac ~ avec Apache
Installez Python 2.7.9 et Python 3.4.x avec pip.
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Premiers pas avec le framework Python Django sur Mac OS X
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python
Exécutez Zookeeper x python (kazoo) sur Mac OS X
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Installer shogun avec python modulaire (OS X Yosemite)
Shpinx (Python Document Builder) sur Mac OS X
Installez le sélénium sur votre Mac et essayez-le avec python
[Mac OS] Utilisez Kivy avec PyCharm! [Développement d'applications Python]
Créer un environnement de développement Python sur Mac OS X
mac OS X 10.15.x pyenv Python Si vous ne pouvez pas installer
Installez PyQt5 avec homebrew sur Mac OS X Marvericks (10.9.2)
Étudiez l'échange de données Java et Python avec Apache Arrow
Streaming Python et SensorTag, Kafka, Spark Streaming - Partie 5: Connexion de Jupyter à Spark avec Apache Toree
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
Programmation avec Python et Tkinter
compilateur x86 réalisé avec python
Python et matériel - Utilisation de RS232C avec Python -
Utilisation de plusieurs versions de Python sur Mac OS X (2) Utilisation
J'ai appris MNIST avec Caffe et j'ai essayé de le dessiner (MAC OS X El Capitan)
Utilisation du SDK NAOqi 2.4.2 Python avec Mac OS X El Capitan
Apache mod_auth_tkt et Python AuthTkt
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
Créer un environnement python avec pyenv (OS X El Capitan 10.11.3)
Jouez avec les archives de Mastodon dans les réponses et les favoris de Python 2 Count
Mémo sur Mac OS X
python avec pyenv et venv
[Python x Zapier] Obtenez des informations d'alerte et notifiez avec Slack
Comment installer Theano sur Mac OS X avec homebrew
À propos des opérations Python et OS
Utiliser OpenCV avec Python @Mac
Fonctionne avec Python et R
Utilisation de plusieurs versions de Python sur Mac OS X (1) Installation de plusieurs ver
Apache Beam 2.0.x avec Google Cloud Dataflow commençant par IntelliJ et Gradle
[Apprentissage automatique] Essayez d'exécuter Spark MLlib avec Python et faites des recommandations
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Erreur et solution lors de l'installation de python3 avec homebrew sur mac (catalina 10.15)
Suite ・ Notes sur la préparation de l'environnement de développement Python sur Mac OS X
Installez rapidement OpenCV2.4 (+ python) sur OS X et essayez l'exemple
Comment exécuter Jupyter et Spark sur Mac avec des paramètres minimaux
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Robot fonctionnant avec Arduino et python
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Créer Apache Log CSV avec Python
Scraping avec Node, Ruby et Python
Grattage avec Python, Selenium et Chromedriver
Installez Sphinx sur MacOSX
Grattage avec Python et belle soupe
Installation de scikit-learn (Mac OS X)
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-