Spark學習進度2
阿新 • • 發佈:2021-01-19
入門
第一個應用的執行
-
進入 Spark 安裝目錄中
cd /export/servers/spark/
-
執行 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
-
執行結果
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 上的檔案
-
上傳檔案到hdfs
cd /export/data hdfs dfs -mkdir /dataset hdfs dfs -put wordcount.txt /dataset/
-
在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