Word Count mit Apache Spark und Python (Mac OS X)

Überblick

Als erster Schritt zur Überprüfung von Apache Spark. Wie jeder, der Erfahrung mit Hadoop hat, gut weiß, zählt derjenige die gleichen Wörter in der Datei. Die Umgebung ist Mac OSX, aber ich frage mich, ob es für Linux fast dasselbe ist. Der vollständige Code lautet hier.

Installation

$ brew install apache-spark

Installationsbestätigung

OK, wenn die Spark-Shell funktioniert und `scala>` angezeigt wird

$ /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>

Versuchen Sie die Wortzählung lokaler Dateien mit Python

Dies wurde unter Bezugnahme auf die Beschreibung auf der offiziellen Website geschrieben.

Verzeichnisaufbau

Bitte bereiten Sie sich wie folgt vor.

$ tree
.
├── input
│   └── data #Zu lesender Text
└── wordcount.py #Ausführungsskript

1 directory, 4 files

Code schreiben

Hier verwenden wir Python. Sie können in Scala oder Java schreiben. Ich bin gut darin, also lass uns gehen. So was.

wordcount.py


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

from pyspark import SparkContext

def execute(sc, src, dest):
    '''
Führen Sie die Wortzählung durch
    '''
    #Lesen Sie die src-Datei
    text_file = sc.textFile(src)
    counts = text_file.flatMap(lambda line: line.split(" ")) \
                 .map(lambda word: (word, 1)) \
                 .reduceByKey(lambda a, b: a + b)
    #Ergebnisse exportieren
    counts.saveAsTextFile(dest)

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

Dateivorbereitung lesen

Passend. Zum Beispiel so.

./input/data


aaa
bbb
ccc
aaa
bbbb
ccc
aaa

Lauf

Der folgende Befehl.

$ which pyspark
/usr/local/bin/pyspark

#Lauf
$ pyspark ./wordcount.py

Wenn Sie es ausführen, fließt ein Protokoll. (Wie Hadoop Streaming)

Bestätigung

./output/part-00000


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

Es wurde richtig gezählt.

Bonus

Beachten Sie, dass der nächste Prozess fehlschlägt, wenn das Ausgabezielverzeichnis (./output) bereits generiert wurde. Es ist eine gute Idee, eine Shell wie die folgende an dasselbe Verzeichnis anzuhängen.

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

Word Count mit Apache Spark und Python (Mac OS X)
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Python3 + Django ~ Mac ~ mit Apache
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
Erste Schritte mit dem Python-Framework Django unter Mac OS X.
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Installieren Sie Shogun mit Python Modular (OS X Yosemite)
Shpinx (Python Document Builder) unter Mac OS X.
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
[Mac OS] Verwenden Sie Kivy mit PyCharm! [Python-Anwendungsentwicklung]
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
mac OS X 10.15.x pyenv Python Wenn Sie nicht installieren können
Installieren Sie PyQt5 mit Homebrew unter Mac OS X Marvericks (10.9.2).
Untersuchen Sie den Java- und Python-Datenaustausch mit Apache Arrow
Streaming von Python und SensorTag, Kafka, Spark Streaming-Teil 5: Verbindung von Jupyter zu Spark mit Apache Toree
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Programmieren mit Python und Tkinter
x86-Compiler selbst erstellt mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Verwenden mehrerer Versionen von Python unter Mac OS X (2) Verwendung
Ich habe MNIST mit Caffe gelernt und versucht, es zu zeichnen (MAC OS X El Capitan)
Verwenden von NAOqi 2.4.2 Python SDK mit Mac OS X El Capitan
Apache mod_auth_tkt und Python AuthTkt
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Erstellen Sie eine Python-Umgebung mit pyenv (OS X El Capitan 10.11.3).
Spielen Sie mit Mastodons Archiv in Python 2 Count Antworten und Favoriten
Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
Python mit Pyenv und Venv
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
So installieren Sie Theano unter Mac OS X mit Homebrew
Informationen zu Python- und Betriebssystemoperationen
Verwenden von OpenCV mit Python @Mac
Funktioniert mit Python und R.
Verwenden mehrerer Versionen von Python unter Mac OS X (1) Installation von Multiple Ver
Apache Beam 2.0.x mit Google Cloud Dataflow beginnend mit IntelliJ und Gradle
[Maschinelles Lernen] Versuchen Sie, Spark MLlib mit Python auszuführen, und geben Sie Empfehlungen ab
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Fehler und Lösung bei der Installation von Python3 mit Homebrew auf einem Mac (Catalina 10.15)
Fortsetzung ・ Hinweise zur Vorbereitung der Python-Entwicklungsumgebung unter Mac OS X.
Installieren Sie OpenCV2.4 (+ Python) schnell unter OS X und probieren Sie das Beispiel aus
So führen Sie Jupyter und Spark auf einem Mac mit minimalen Einstellungen aus
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Machen Sie Apache Log CSV mit Python
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Installieren Sie Sphinx unter MacOSX
Kratzen mit Python und schöner Suppe
Installation von scikit-learn (Mac OS X)
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-