本項目是 apache spark1.6.1方文檔的中文翻譯版,之前翻譯過spark1.5,由于網站有組織翻譯spark1.6.1是以我又重新翻譯了一下,我翻譯的這一章和spark1.5一樣。本次翻譯主要針對對spark感興趣和緻力于從事大資料方法開發的人員提供有價值的中文資料,希望能夠對大家的工作和學習有所幫助。
這個翻譯本應該在二月份完成,由于一直出差加上加班導緻短短一篇文章遲遲沒有完成,在此想大家表示深深的歉意。同時也希望有能力的童鞋能夠一起努力推動大資料在中國的發展,讓天下沒有難學的技術謝謝大家。
<a href="http://spark.apache.org/docs/latest/quick-start.html#caching">緩存caching</a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#self-contained-applications">獨立應用(self-contained applications)</a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#where-to-go-from-here">下一章(where to go from here)</a>
spark shell提供了一個簡單學習api的方式, 同時它也是一個有用的互動分析工具. 它可以使用scala(它是一種運作在java虛拟機上并且可以使用java依賴包)或者python. 切換到spark目錄并啟動按照以下方式啟動它:
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_scala_0"><b>scala</b></a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_python_0"><b>python</b></a>
spark的主要抽象是一個分布式資料集被稱為彈性分布式資料集 (rdd). rdds可以通過hadoop上面的輸入格式( 例如 hdfs 檔案)或者通過其他的rdd轉換. 讓我們通過spark目錄中的readme檔案建立一個新的rdd:
我們能夠通過鍊式程式設計把transformations 操作和 actions操作連接配接一起:
rdd操作因子和轉換因子可以用來進行更加複雜的計算.讓我們尋找到需要的資料:
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_scala_1"><b>scala</b></a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_python_1"><b>python</b></a>
第一個map一行整數數值,建立一個新的rdd. <code>reduce被調用來查找最多資料一行的資料個數</code>. <code>map的參數和</code> <code>reduce的參數是scala函數自變量</code>(閉包),我們能夠使用任何scala或java的語言的特性. 例如, 我們很容易的調用在其他地方定義的函數. 我們使用 <code>math.max()函數使代碼很容易了解</code>:
通用的資料處理流程是mapreduce,hadoop廣泛使用. spark很容易的繼承mapreduce計算流程:
spark也支援把一個資料集放到一個叢集的緩存裡面.當資料多次通路它很有用,例如當你查詢一個常用的資料集或者運作一個 pagerank算法的時候. 舉一個簡單的例子, 讓我們把 <code>lineswithspark</code> 資料集緩存起來:
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_scala_2"><b>scala</b></a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_python_2"><b>python</b></a>
假如我希望開發一個獨立的應用通過spark api. 我們可以通過 scala (with sbt), java (with maven), and python來調用開發spark api.
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_scala_3"><b>scala</b></a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_java_3"><b>java</b></a>
<a href="http://spark.apache.org/docs/latest/quick-start.html#tab_python_3"><b>python</b></a>
現在我們建立一個簡單的spark應用,實際上, 它的名字是 <code>simpleapp.scala</code>:
注意一個應用應該定義在一個 <code>main()函數裡面或者通過繼承</code><code>scala.app</code>. <code>scala.app的子類可能不能正确的工作</code>.
這個程式僅僅是統計readme檔案中包含‘a’和‘b’的數量.注意你需要替換你的本地的your_spark_home 環境變量. 不同于前面的spark shell例子, 它需要初始化sparkcontext, 我們需要初始化 sparkcontext作為程式運作的一部分.
我們的應用依賴spark api, 是以我們也包含sbt 配置檔案, <code>simple.sbt</code>, 它包含了spark的一些依賴. 這個檔案增加一個倉庫,而這些倉庫是spark運作不可缺少的一部分:
為了使 sbt能夠正确的工作, 我們需要布局<code>simpleapp.scala</code> 和<code>simple.sbt按計劃執行這種類型結構</code>.一旦配置正确, 我們能夠建立一個jar包包含這個應用的代碼, 然後使用 <code>spark-submit</code> 來運作我們的程式.
配置運作你的第一個spark程式!