Spark开发实例(编程实践)开发实例(编程实践)
本节将介绍如何实际动手进行 RDD 的转换与操作,以及如何编写、编译、打包和运行 Spark 应用程序。
启动启动 Spark Shell
Spark 的交互式脚本是一种学习 API 的简单途径,也是分析数据集交互的有力工具。Spark 包含多种运行模式,可使用单机模
式,也可以使用分布式模式。为简单起见,本节采用单机模式运行 Spark。
无论采用哪种模式,只要启动完成后,就初始化了一个 SparkContext 对象(SC),同时也创建了一个 SparkSQL 对象用于
SparkSQL 操作。进入 Scala 的交互界面中,就可以进行 RDD 的转换和行动操作。
进入目录 SPARK_HOME/bin 下,执行如下命令启动 Spark Shell。
$./spark-shell
Spark Shell 使用使用
假定本地文件系统中,文件 home/hadoop/SparkData/WordCount/text1 的内容如下。
hello world
hello My name is john I love Hadoop programming
下面我们基于该文件进行 Spark Shell 操作。
1)利用本地文件系统的一个文本文件创建一个新)利用本地文件系统的一个文本文件创建一个新 RDD。。
scala>var textFile = sc.textFile(“file://home/Hadoop/SparkData/WordCount/text1”);
textFile:org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at
:12
2)执行动作操作,计算文档中有多少行。)执行动作操作,计算文档中有多少行。
scala>textFile.count() //RDD中有多少行
17/05/17 22:59:07 INFO spark.SparkContext:Job finished:count at:15, took 5.654325469 s
resl:Long = 2
返回结果表明文档中有“2”行。
3)执行动作操作,获取文档中的第一行内容。)执行动作操作,获取文档中的第一行内容。
scala>textFile.first() // RDD 第一行的内容
17/05/17 23:01:25 INFO spark.SparkContext:Job finished:first at :15,took
返回结果表明文档的第一行内容是“hello world”。
4)转换操作会将一个)转换操作会将一个 RDD 转换成一个新的转换成一个新的 RDD。获取包含。获取包含“hello”的行的代码如下的行的代码如下。
scala>var newRDD = textFile.filter (line => line.contains(“hello”)) //有多少行含有 hello
scala>newRDD.ount() // 有多少行含 hello
17/05/17 23:06:33 INFO spark.SparkContext:Job finished:count at :15,took 0.867975549 s
res4:Long = 2
这段代码首先通过转换操作 filter 形成一个只包括含有“hello”的行的 RDD,然后再通过 count 计算有多少行。
5))Spark Shell 的的 WordCount 实现实现
scala> val file = sc.textFile (“file://home/hendoop/SparkData/WordCount/text1”));
scala> val count = file.flatMap(line=>line.split(“”)).map(word => (word,1)).reduceByKey(_+_)
scala> count.collect()
17/05/17 23:11:46 INFO spark.SparkContext:Job finished: collect at:17,
took 1.624248037 s
res5: Array[(String, Int)] = Array((hello,2),(world,1),(My,1),(is,1),(love,1),(I,1),(John,1),(hadoop,1),(name,1),(programming,1))
使用 sparkContext 类中的 textFile() 读取本地文件,并生成 MappedBJDD。
使用 flatMap() 方法将文件内容按照空格拆分单词,拆分形成 FlatMappedRDD。
使用 map(word=>(word,1)) 将拆分的单词形成 数据对,此时生成 MappedBJDD。
使用 reduceByKey() 方法对单词的频度进行统计,由此生成 ShuffledRDD,并由 collect 运行作业得出结果。
编写编写Java应用程序应用程序
1. 安装安装 maven
手动安装 maven,可以访问 maven 官方下载 apache-maven-3.3.9-bin.zip。选择安装目录为 /usr/local/maven。