大数据笔记(二十八)——执行Spark任务、开发Spark WordCount程序
一、执行Spark任务: 客户端
1、Spark Submit工具:提交Spark的任务(jar文件)
(*)spark提供的用于提交Spark任务工具
(*)example:/root/training/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar
(*)SparkPi.scala 例子:蒙特卡罗求PI
bin/spark-submit --master spark://bigdata11:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.1.0.jar 100
Pi is roughly 3.1419547141954713
bin/spark-submit --master spark://bigdata11:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.1.0.jar 300
Pi is roughly 3.141877971395932
2、Spark Shell 工具:交互式命令行工具、作为一个Application运行
两种模式:(1)本地模式
在spark解压目录/bin下执行:./spark-shell
日志:
创建一个文件hellospark.txt
读文件:
(2)集群模式
bin/spark-shell --master spark://bigdata11:7077
日志:
Spark context available as 'sc' (master = spark://bigdata11:7077, app id = app-20180209210815-0002).
对象:Spark context available as 'sc'
Spark session available as 'spark' ---> 在Spark 2.0后,新提供
是一个统一的访问接口:Spark Core、Spark SQL、Spark Streaming
sc.textFile("hdfs://bigdata11:9000/input/data.txt") 通过sc对象读取HDFS的文件
.flatMap(_.split(" ")) 分词操作、压平
.map((_,1)) 每个单词记一次数
.reduceByKey(_+_) 按照key进行reduce,再将value进行累加
.saveAsTextFile("hdfs://bigdata11:9000/output/spark/day0209/wc")
多说一句:
.reduceByKey(_+_)
完整
.reduceByKey((a,b) => a+b)
3、开发WordCount程序
http://spark.apache.org/docs/2.1.0/api/scala/index.html#org.apache.spark.package
(1)Scala版本: 在IDEA中
package mydemo /*
提交
bin/spark-submit --master spark://bigdata11:7077 --class mydemo.MyWordCount /root/temp/MyWordCount.jar hdfs://bigdata11:9000/input/data.txt hdfs://bigdata11:9000/output/spark/day0209/wc1
*/ import org.apache.spark.{SparkConf, SparkContext} //开发一个Scala版本的WordCount
object MyWordCount {
def main(args: Array[String]): Unit = {
//创建一个Config
val conf = new SparkConf().setAppName("MyScalaWordCount") //核心创建SparkContext对象
val sc = new SparkContext(conf) //使用sc对象执行相应的算子(函数)
sc.textFile(args(0))
.flatMap(_.split(" "))
.map((_,1))
.reduceByKey(_+_)
.saveAsTextFile(args(1)) //停止SparkContext对象
sc.stop() }
}
分析WordCount程序执行的过程
Spark 提交任务的流程
最新文章
- jdk源码分析红黑树——插入篇
- 线条围绕 div 中心转圈 效果
- 【转载】PMC/PEC Boundary Conditions and Plane Wave Simulation
- python+selenium自动化软件测试(第15章):基础实战(2)
- 201521123095 《Java程序设计》第3周学习总结
- 微信公众号接口配置验证URL
- 15-TypeScript策略模式
- 「SQL归纳」树形结构表的存储与查询功能的实现——通过路径方法(非递归)
- Linux平台运行jmeter
- C#File类常用文件操作以及一个模拟的控制台文件管理系统
- SpringCloud系列八:Zuul 路由访问(Zuul 的基本使用、Zuul 路由功能、zuul 过滤访问、Zuul 服务降级)
- RDLC报表刷新问题
- php \r\n
- [LeetCode&;Python] Problem 350. Intersection of Two Arrays II
- 设置获取cookie,setCookie,getCookie
- 让eclipse调试和豌豆荚并存
- ipV4&;V6的区别
- cocos2d-x(十一)Lua开发飞机大战-6-加入子弹
- 02.Java入门
- 删除lv