Mac10.9 でApache-Sparkを動作させてみる(in Python)
分散処理で有名なApache-Sparkを初動作させてみる。
皆さんこんにちは
お元気ですか。腹減った。
分散処理のプラットフォームSparkを扱ってみます。
Apache Sparkとは
Apache Sparkは大きいデータを高速に処理する為のプラットフォームで
Hadoopの100倍速の速さ、様々なプラットフォームとの連携ができることが特徴ですね。
インストール
brew install apache-spark
インストール確認
pySparkと入力し、長い長いログの後に以下のログが出力されれば、インストールされていることを
確認することができます。
$bash pySpark Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 1.4.1 /_/ Using Python version 2.7.10 (default, Jul 13 2015 12:18:59)
GUI
pySparkでSparkを立ち上げるとGUIで現在のタスクの状況やジョブ、環境設定を見ることができます。
以下のurlにアクセスすると見ることができます。
試しにプログラムを実行してみる。
Apache Spark チュートリアルを参考に作成した
プログラムです。配列の内容を合計して表示します。
配列を合計する。
from pyspark import SparkContext from operator import add sc = SparkContext() a = sc.parallelize(xrange(1000000), 2) print a.reduce(add)
Spark MLlibを使ってみる。
Sparkといえばデータ処理、そして機械学習を使ってみるイメージがあるのは
私だけでしょうか。大本命のSpark MLlibを扱ってみます。
Spark MLlibとは
Sparkの機構を用いて使える機械学習のライブラリです。
内容を大まかに分類すると、Classification,Regression,Recommendationなどがあります。
実際のサンプルコードを扱ってみます。テストは以下から取得してきました。
spark/sample_svm_data.txt at master · apache/spark · GitHub
from pyspark.mllib.classification import LogisticRegressionWithLBFGS, LogisticRegressionModel from pyspark.mllib.regression import LabeledPoint from pyspark import SparkContext # テキストを解析する。 def parsePoint(line): values = [float(x) for x in line.split(' ')] return LabeledPoint(values[0], values[1:]) sc = SparkContext() data = sc.textFile("./logistic_data.txt") parsedData = data.map(parsePoint) # モデルを構築する。 model = LogisticRegressionWithLBFGS.train(parsedData) # トレーニング予測を算出する。 labelsAndPreds = parsedData.map(lambda p: (p.label, model.predict(p.features))) trainErr = labelsAndPreds.filter(lambda (v, p): v != p).count() / float(parsedData.count()) print("Training Error = " + str(trainErr)) # モデルのセーブと読み込みを行う。 model.save(sc, "myModelPath") sameModel = LogisticRegressionModel.load(sc, "myModelPath")
テキストの解析→機械学習→予測→モデルのsave→loadの流れを行っています。
modelについては、trainとpredictメソッドを使うことによって学習と予測をすることができます。
実際に使うには学習済みのモデルをセーブし、予測に使っていくのでしょうか。