開始本篇博客之前,請先準備好環境,參見【上一篇 Spark集羣部署】
1.Spark-Shell 交互式編程
1.1 啓動命令
bin/spark-shell \
--master spark://l0:7077 \
--executor-memory 1g \
--total-executor-cores 2
參數 | 解釋 |
---|---|
–master | 集羣的master URL (如 spark://192.168.191.130:7077) |
–executor-memory 1G | 指定每個executor可用內存爲1G |
–total-executor-cores 2 | 指定每個executor使用的cup核數爲2個 |
–jars | 添加任務所需的其他依賴 |
如果啓動spark shell時沒有指定master地址,但是也可以正常啓動spark shell和執行spark shell中的程序,其實是啓動了spark的local模式,該模式僅在本機啓動一個進程,沒有與集羣建立聯繫。
Spark Shell中已經默認將SparkContext類初始化爲對象sc。用戶代碼如果需要用到,則直接應用sc即可。
1.2 Spark-Shell中運行wordcount
scala> sc.textFile("hdfs://l0:8020/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://l0:8020/output")
實現的功能是將HDFS中words.txt中的內容,按照每個單詞計數,結果存放於HDFS的output目錄中。
2. spark-submit提交Job
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://l0:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/home/hadoopadmin/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
100
參數 | 解釋 |
---|---|
–class | 應用的啓動類 |
spark-examples_2.11-2.1.1.jar | 程序所在jar包 |
100 | 程序所需參數 |
該算法是利用蒙特•卡羅算法求PI