Spark實(shí)戰(zhàn):?jiǎn)喂?jié)點(diǎn)本地模式搭建Spark運(yùn)行環(huán)境
前言:
Spark本身用scala寫的,運(yùn)行在JVM之上。
JAVA版本:java 6 /higher edition.
1 下載Spark
http://spark.apache.org/downloads.html
你可以自己選擇需要的版本,這里我的選擇是:
http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0-bin-hadoop1.tgz
如果你是奮發(fā)圖強(qiáng)的好碼農(nóng),你可以自己下載源碼:http://github.com/apache/spark.
注意:我這里是運(yùn)行在Linux環(huán)境下。沒有條件的可以安裝下虛擬機(jī)之上!
2 解壓縮&進(jìn)入目錄
tar -zvxf spark-1.1.0-bin-hadoop1.tgz
cd spark-1.1.0-bin-hadoop1/
3 啟動(dòng)shell
./bin/spark-shell
你會(huì)看到打印很多東西,***顯示
4 小試牛刀
先后執(zhí)行下面幾個(gè)語(yǔ)句
- val lines = sc.textFile("README.md")
- lines.count()
- lines.first()
- val pythonLines = lines.filter(line => line.contains("Python"))
- scala> lines.first()
- res0: String = ## Interactive Python Shel
---解釋,什么是sc
sc是默認(rèn)產(chǎn)生的SparkContext對(duì)象。
比如
- scala> sc
- res13: org.apache.spark.SparkContext = org.apache.spark.SparkContext@be3ca72
這里只是本地運(yùn)行,先提前了解下分布式計(jì)算的示意圖:
5 獨(dú)立的程序
***以一個(gè)例子結(jié)束本節(jié)
為了讓它順利運(yùn)行,按照以下步驟來(lái)實(shí)施即可:
--------------目錄結(jié)構(gòu)如下:
- /usr/local/spark-1.1.0-bin-hadoop1/test$ find .
- .
- ./src
- ./src/main
- ./src/main/scala
- ./src/main/scala/example.scala
- ./simple.sbt
然后simple.sbt的內(nèi)容如下:
- name := "Simple Project"
- version := "1.0"
- scalaVersion := "2.10.4"
- libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0"
example.scala的內(nèi)容如下:
- import org.apache.spark.SparkConf
- import org.apache.spark.SparkContext
- import org.apache.spark.SparkContext._
- object example {
- def main(args: Array[String]) {
- val conf = new SparkConf().setMaster("local").setAppName("My App")
- val sc = new SparkContext("local", "My App")
- sc.stop()
- //System.exit(0)
- //sys.exit()
- println("this system exit ok!!!")
- }
- }
紅色local:一個(gè)集群的URL,這里是local,告訴spark如何連接一個(gè)集群,local表示在本機(jī)上以單線程運(yùn)行而不需要連接到某個(gè)集群。
橙黃My App:一個(gè)項(xiàng)目的名字,
然后執(zhí)行:sbt package
成功之后執(zhí)行
./bin/spark-submit --class "example" ./target/scala-2.10/simple-project_2.10-1.0.jar
結(jié)果如下:
說(shuō)明確實(shí)成功執(zhí)行了!
結(jié)束!