maven依赖 spark sql_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
<console>:12
2)执行动作操作,计算文档中有多少行。
scala>textFile.count() //RDD中有多少行
17/05/17 22:59:07 INFO spark.SparkContext:Job finished:count at<console>: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 <console>: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 <console>:15,took 0.867975549 s
res4:Long = 2
这段代码首先通过转换操作 filter 形成一个只包括含有“hello”的行的 RDD,然后再通过 count 计算有多少行。5)Spark Shell 的 WordCount 实现使用 sparkContext 类中的 textFile() 读取本地文件,并生成 MappedBJDD。
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<console>: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)) 将拆分的单词形成 <单词,1> 数据对,此时生成 MappedBJDD。
- 使用 reduceByKey() 方法对单词的频度进行统计,由此生成 ShuffledRDD,并由 collect 运行作业得出结果。
编写Java应用程序
1. 安装 maven
手动安装 maven,可以访问 maven 官方下载 apache-maven-3.3.9-bin.zip。选择安装目录为 /usr/local/maven。
sudo unzip ~/下载/apache-maven-3.3.9-bin.zip -d/usr/local
cd /usr/local
sudo mv apache-maven-3.3.9/ ./maven
sudo chown -R hadoop ./maven
2. 编写 Java 应用程序代码
在终端执行以下命令创建一个文件夹 sparkapp2,作为应用程序根目录。
cd~#进入用户主文件夹
mkdir -p ./sparkapp2/src/main/java
使用 vim./sparkapp2/src/main/java/SimpleApp.java 建立一个名为 SimpleApp.java 的文件,代码如下。
/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
public class SimpleApp {public static void main(String[] args) {String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your systemJavaSparkContext sc = new JavaSparkContext("local", "Simple App",
"file:///usr/local/spark/",new String[] {"target/simple-project-1.0.jar"});JavaRDD<String> logData = sc.textFile(logFile).cache();long numAs = logData.filter(new Function<String, Boolean>(){public Boolean call(String s) { return s.contains ("a");}}).count();long numBs = logData.filter(new Function<String,Boolean>(){public Boolean call(String s) { return s.contains("b");}}).count();System.out.printIn ("Lines with a:"+ numAs +",lines with b:"+ numBs);}
}
该程序依赖 Spark Java API,因此我们需要通过 maven 进行编译打包。在 ./sparkapp2 中新建文件 pom.xml(vim./sparkapp2/pom.xml),并声明该独立应用程序的信息及与 Spark 的依赖关系,代码如下。
<project><groupld>edu.berkeley</groupId><artifactId>simple-project</artifactId><modelVersion>4.0.0</modelVersion><name>Simple Project</name><packaging>jar</packaging><version>l.0</version><repositories><repository><id>Akka repository</id><url>http://repo.akka.io/releases</url></repository></repositories><dependencies><dependency> <!--Spark dependency --><groupId>org.apache.spark<groupId><artifactId>spark-core_2.11</artifactId><version>2.1.0</version></dependency></dependencies>
</project>
3. 使用 maven 打包 Java 程序
为了保证 maven 能够正常运行,先执行以下命令检查整个应用程序的文件结构。
cd ~/sparkapp2
find
文件结构如图 1 所示。
接着,可以通过以下代码将这整个应用程序打包成 Jar。
/usr/local/maven/bin/mvn package
如果运行以上命令后出现类似下面的信息,说明 Jar 包生成成功。
[INFO] ---------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ---------------------------------------------
[INFO] Total time: 6.583 s
[INFO] Finished at: 2017-02-19T15:52:08+08:00
[INFO] Final Memory: 15M/121M
[INFO]----------------------------------------------
4. 通过 spark-submit 运行程序
最后,可以将生成的 Jar 包通过 spark-submit 提交到 Spark 中运行,命令如下。
/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar
最后得到的结果如下。
Lines with a: 62,Lines with b: 30
maven依赖 spark sql_Spark开发实例相关推荐
- maven依赖 spark sql_使用Kafka+Spark+Cassandra构建实时处理引擎
大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 暴走大数据点击右侧关注,暴走大数据! Apache Kafka 是一个可扩展,高性能,低延迟的平台,允许我们像消息系统一样读取和写入数据.我们 ...
- maven依赖 spark sql_window环境运行spark-xgboost 8.1踩到的坑
在window 环境下使用spark - xgboost会出现一些问题,这里记录一下. 环境:window 7 + spark 2.31 + xgboost 8.1 + idea + maven 一. ...
- Intellij IDEA使用Maven搭建spark开发环境(scala)
如何一步一步地在Intellij IDEA使用Maven搭建spark开发环境,并基于scala编写简单的spark中wordcount实例. 1.准备工作 首先需要在你电脑上安装jdk和scala ...
- Spark利用(idea+maven+scala)创建wordcount打包jar并在spark on yarn上运行——Spark的开发
今天的你不付昨天的辛苦,今天的辛苦定会拥抱明日的幸福, 每一次的成长,都要给自己以鼓励,每一次的突破,都给自己以信心,万花丛中我不是最美,但我有我的自信 ------------送给一直努力的你 今天 ...
- Spark开发实例(编程实践)
本节将介绍如何实际动手进行 RDD 的转换与操作,以及如何编写.编译.打包和运行 Spark 应用程序. 启动 Spark Shell Spark 的交互式脚本是一种学习 API 的简单途径,也是分析 ...
- IDEA下使用maven配置Spark开发环境
IDEA下使用maven配置Spark开发环境 1.安装Java 2.配置环境变量 3.配置Hadoop环境 4.安装Scala插件 5.配置maven 4.Spark编程 Spark测试 使用到的软 ...
- 【华为云实战开发】15.Maven依赖的JAR包下载慢?赶紧看过来
文:华为云DevCloud 亲亲土豆 相信许多JAVA开发者在日常工作中时常会碰到这种情况,那就是编译Maven工程时,工程所依赖的jar包文件下载非常慢,甚至经常出现下载不成功的问题,今天,小编就给 ...
- Spark 应用开发程序
目 录 1 绪论 1 1.1 项目背景 1 1.1.1 Hadoop的发展 1 1.1.2 Spark的兴起 2 1.2 项目意义 2 2 Hadoop云计算环境的搭建 3 2.1 准备工作 3 2. ...
- 第9课:IDEA下的spark程序开发
第9课:IDEA下的spark程序开发 1.下载IntelliJ IDEA: http://www.jetbrains.com/idea/ 选择社区版,要在centos上安装,需要下载.TARGZ,解 ...
最新文章
- java 异常的分类并举例_Java异常处理中的一些特殊情况举例
- Java进阶:Semaphore信号量基本使用
- wifi拥挤时防掉线小技巧
- shell比较两个字符串是否相等
- java.sql.SQLSyntaxErrorException: Unknown database ‘spring‘
- ECS Windows系统使用自带监视器查看IIS并发连接数
- 淘宝商城事件:中小卖家缺失的互联网信任
- selenium-模拟登录QQ空间(附模拟滑动验证码)
- linux7怎么把gpt分区改成MBR,GPT转MBR|硬盘GPT分区转MBR教程(两种办法)
- miui中的网页链接调用服务器,miui新增网页链接调用服务有什么用?
- 每股收益具体怎么来的
- 【新年新气象_新年CSDN第一篇】斯特林数简介及应用
- 2018年最新old男孩python全栈第九期课程-大牛编程吧-Python编程精品区-大牛编程吧
- 我们的爱恨情仇:人性-关系-危机-和谐的科学研究
- autocad2007二维图画法_CAD中如何绘制二维图形
- (一)JMeter性能测试,完整入门篇:性能测试操作步骤
- 图机器学习——5.9 图神经网络:图的增广
- 有三类人永远做不了程序员
- MySQL报错no connection established
- OC--category(类目、分类、类别)