入门
第一个应用的运行
-
进入 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