一 Spark shell
1 spark shell 简介
Spark shell 的原理是把每一行 Scala 代码编译成类, 最终交由 Spark 执行
2 启动 spark shell (概念)
进入 Spark 安装目录后执行 spark-shell --master master 就可以提交Spark 任务
3 Master 的地址可以有如下几种设置方式
3.1 local[N]
使用 N 条 Worker 线程在本地运行
3.2 spark://host:port
在 Spark standalone 中运行,指定 Spark 集群的 Master 地址,端口默认为 7077
3.3 mesos://host:port
在 Apache Mesos 中运行, 指定 Mesos 的地址
3.4 yarn
在 yarn 中运行,yarn 的地址由环境变量 HADOOP_CONF_DIR
来指定
二 经典入门案例(单词统计)
1 在 /usr/local/apps 目录下创建一个 worcount.txt 文件 输入一些字符串
2 然后进入 spark master (mini-01)节点的 bin 目录下 (看清楚不是启动 spark 集群的 sbin目录)
cd spark/bin/
3 启动 spark shell
spark-shell --master local[6]
出现如下图 spark-shell 启动成功
解释:
图中圈起来的 sc 是spark-shell 主动给我们创建的 sparkContext 如果在IDEA 中写代码我们需要自己创建 sc
spark-shell --master local[6] 这里的6 是指定了6条线程来运行我们的spark程序
4 运行第一个Spark 程序
上图最后的 Array 已经将结果收集起来 我们看到对之前输入到 wordCount.txt 中的字符串进行了数量统计
代码解释
1 读取 wordCount.txt文件中的内容 (类似于Java的IO流)
var rdd1 = sc.textFile("file:///usr/local/apps/wordCount.txt")
2 对读取内容根据空格进行切分将其展平 flatMap是 spark rdd中的算子
val rdd2 = rdd1.flatMap(item=>item.split(" "))
3 这里的item最终成为一个元组即键值对类型 map是spark rdd中的算子
val rdd3 = rdd2.map(item=>(item,1))
4 reduceByKey 是 针对 KV 型数据来进行计算 reduceByKey是spark rdd中的算子
val rdd4 = rdd3.reduceByKey((curr,agg)=>curr+agg)
5 收集结果 collect是spark rdd中的算子
rdd4.collect()
以上 感谢!