編寫第一個用scala寫的spark任務,用sbt打包成jar,並單機模式下運行


一、編寫第一個用scala寫的spark應用:

仿照spark的 quick-start的Self-Contained Applications寫出第一個scala完整程序
鏈接如下:
http://spark.apache.org/docs/latest/quick-start.html

即:

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
  }
}

整個程序作用是:找到這個文件

YOUR_SPARK_HOME/README.md

中有幾個a和幾個b。


二、用sbt進行打包成jar:

命令:sbt package
具體步驟見
http://spark.apache.org/docs/latest/quick-start.html
中的Self-Contained Applications

打包時候幾點注意:

1、

目錄結構一定要對

目錄結構可以通過find .來看

有點類似cmake的感覺

2、

總時間,近30分鐘,開始打開會terminal沒現象10分鐘,然後開始要各種resolve,之後要下載很多庫,我這邊網速超慢

sbt是個聯網編譯器,

spark的應用用到了很多RDD的變換,來編譯這些庫都得去網上下相應的包

最後顯示,編譯時間11s


這時成功完成SimpleApp

三、在本機上測試:

命令爲:

YOUR_SPARK_HOME/bin/spark-submit \

 --class "SimpleApp" \
 --master local[4] \
 target/scala-2.10/simple-project_2.10-1.0.jar

 我對jar的理解就是一個可執行文件了,這個可執行文件在JVM上就可以跑了,local中4是指設置成4個線程,但具體原因我也不知道

注意submit的參數:

--class中 SimpleApp是包名

上傳的的jar的地址別寫錯



第二次編譯不知道會怎麼樣,因爲按理說這些庫都下好了,下次就不需要再重新下載了吧,不清楚包的利用率高不高




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章