1. 程式人生 > 實用技巧 >Spark學習進度2

Spark學習進度2

入門

第一個應用的執行

  1. 進入 Spark 安裝目錄中

    cd /export/servers/spark/
    
  2. 執行 Spark 示例任務

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://node01:7077,node02:7077,node03:7077 \
    --executor-memory 1G \
    --total-executor-cores 2 \
    /export/servers/spark/examples/jars/spark-examples_2.11-2.2.3.jar \
    100
    
  3. 執行結果

    Pi is roughly 3.141550671141551
    

編寫 Spark 程式

Spark shell

  • Spark shell 是 Spark 提供的一個基於 Scala 語言的互動式直譯器, 類似於 Scala 提供的互動式直譯器, Spark shell 也可以直接在 Shell 中編寫程式碼執行

  • 啟動 Spark shell

    • 進入到spark安裝目錄spark-shell --master master 就可以提交Spark 任務

    • master配置

      地址 解釋
      local[N] 使用 N 條 Worker 執行緒在本地執行
      spark://host:port 在 Spark standalone 中執行, 指定 Spark 叢集的 Master 地址, 埠預設為 7077
      mesos://host:port 在 Apache Mesos 中執行, 指定 Mesos 的地址
      yarn 在 Yarn 中執行, Yarn 的地址由環境變數 HADOOP_CONF_DIR 來指定
    • 測試

      • 建立檔案
      • 啟動spark-shell
      • 執行程式碼
  • Spark shell 的原理是把每一行 Scala 程式碼編譯成類, 最終交由 Spark 執行

Spark-submit

  • Spark submit 是一個命令, 用於提交 Scala 編寫的基於 Spark 框架, 這種提交方式常用作於在叢集中執行任務

讀取 HDFS 上的檔案

  1. 上傳檔案到hdfs

    cd /export/data
    hdfs dfs -mkdir /dataset
    hdfs dfs -put wordcount.txt /dataset/
    
  2. 在Spark shell中訪問hdfs

    val sourceRdd = sc.textFile("hdfs://node01:8020/dataset/wordcount.txt")
    val flattenCountRdd = sourceRdd.flatMap(_.split(" ")).map((_, 1))
    val aggCountRdd = flattenCountRdd.reduceByKey(_ + _)
    val result = aggCountRdd.collect