Sparkを実行してみる

前回の記事でSparkをインストールしたので今回はSparkを実行してみます。

spark-shell

spark-shellはScalaインタラクティブにSparkを実行する事が出来ます。

$ spark-shell
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.0.0
      /_/
scala>
scala>

試しにHDFS上にあるファイルの行数をカウントしてみます。
HDFS上にあるファイルのパスは”/user/hdfs/test”です。

scala> val test = sc.textFile("/user/hdfs/test")
14/09/09 18:13:22 INFO storage.MemoryStore: ensureFreeSpace(213461) called with curMem=0, maxMem=309225062
14/09/09 18:13:22 INFO storage.MemoryStore: Block broadcast_0 stored as values to memory (estimated size 208.5 KB, free 294.7 MB)
test: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at :12

scala> test.count()
res1: Long = 78

78行ありました。

次はこのファイルから特定の文字列"test"を含む行数をカウントしてみます。

scala> test.filter(line => line.contains("test")).count()
res0: Long = 7

testという文字列を含む行は7行ありました。

pyspark

pysparkはPythonインタラクティブにSparkを実行する事が出来ます。

$ pyspark
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 1.0.0
      /_/
 
Using Python version 2.6.6 (r266:84292, Jan 22 2014 09:42:36)
SparkContext available as sc.
>>>
>>>

ではspark-shellと同様にHDFS上のファイル”/user/hdfs/test”の行数をカウントしてみます。

>>> test = sc.textFile("/user/hdfs/test")
14/09/09 18:16:36 INFO storage.MemoryStore: ensureFreeSpace(213461) called with curMem=0, maxMem=309225062
14/09/09 18:16:36 INFO storage.MemoryStore: Block broadcast_0 stored as values to memory (estimated size 208.5 KB, free 294.7 MB)
>>> test.count()
78

78行です。spark-shellと同様の結果です。
ではこちらも特定の文字列”test”を含む行数をカウントします。

>>> test.filter(lambda line: "test" in line).count()
7

7行です。spark-shellと同様の結果です。

まとめ

CDH5を使うと簡単にSparkを試すことが出来るので試してみたい方は是非。
cloudera-managerを使うともっと楽にインストール出来ます。

ただ今回のようにインタラクティブシェルの実行は簡単なのですが、scalaをソースファイルから実行しようとするとビルド時(sbt使用)にエラーが出てしまい絶賛苦戦中です。
Pythonは問題なくソースファイルから実行出来るのですが。
解決したら記事にします。
(ノ´▽`)ノ{+++THANK YOU+++}ヽ(´▽`ヽ)

広告を非表示にする