在学习开源项目时,我习惯是先学会用,然后再理解其原理,进而深入到源码。所以这新开一个系列,分析spark example源码,并把其中例子一个一个拆分出来运行进行学习,下面开始吧。
第一节从最简单的求pi开始吧.
首先创建一个sbt文件,我命名为simple.sbt,代码为
name := "LocalPi"
version := "1.0"
scalaVersion := "2.10.3"
libraryDependencies += "org.apache.spark" %% "spark-core" % "0.9.1"
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
建立一个localPi.scala文件
import scala.math.random
import org.apache.spark._
import SparkContext._
object LocalPi {
def main(args: Array[String]) {
var count = 0
for (i <- 1 to 100000) {
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) count += 1
}
println("Pi is roughly " + 4 * count / 100000.0)
}
}
其文件存放目录为
$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/localPi.scala
运行:
$ sbt "project localpi" "run"
[info] Set current project to LocalPi (in build file:/home/jpan/Mywork/spark-example/exspark/LocalPi/)
[info] Set current project to LocalPi (in build file:/home/jpan/Mywork/spark-example/exspark/LocalPi/)
[info] Updating {file:/home/jpan/Mywork/spark-example/exspark/LocalPi/}localpi...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to /home/jpan/Mywork/spark-example/exspark/LocalPi/target/scala-2.10/classes...
[info] Running LocalPi
Pi is roughly 3.14592
[success] Total time: 8 s, completed May 9, 2014 4:00:59 PM
源码分析:
从源码中可以看到,这个例子很简单,不作详解了。虽然import了spark包,其实并没有用到,只是简单的在本地计算pi。
另外注意下运行命令,很有意思哦,这个可不是
$sbt package
$sbt run
我也是刚学,想学sbt命令,去官网啃文档吧。