Spark编程练习题
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("Spark SQL basic example")
.enableHiveSupport()
.getOrCreate()
//开启隐式转换
import spark.implicits._
//任务:求data的平均值
import util.Random
val data = for(i<- List.range(1,10)) yield Random.nextInt(100)
//使用RDD编程实现
val rdd = sc.parallelize(data,5)
val mean = rdd.map(_.toDouble).reduce(_+_)/rdd.count
println(mean)
//使用SparkSQL编程实现
val df = data.toDF("value")
df.agg("value"->"avg").show
//任务:统计file中每个词的词频
val file = "wordcount"
//使用RDD编程实现
val rdd = sc.textFile(file)
rdd.flatMap(_.trim.split(" ")).map((_,1)).reduceByKey(_+_).collect
//使用SparkSQL编程实现
val df = spark.read.option("header","false").csv(file).toDF("value")
df.flatMap(row=>row(0).toString.trim.split(" ")).groupBy("value").count.show
//任务:
//有一批学生信息表格,包括name,age,score
//找出score排名前3的学生
val students = List(("LiLei",18,87),
("HanMeiMei",16,77),
("DaChui",16,66),
("Jim",18,80),
("RuHua",20,50))
val n = 3
//使用RDD编程实现
val rdd = sc.parallelize(students)
rdd.sortBy(_._3,ascending = false).take(n)
//使用SparkSQL编程实现
val df = students.toDF("name","age","score")
df.orderBy(df("score").desc).limit(n).show
//任务:求最大值最小值
val data = List(1,7,8,5,3,18,34,23,67,53,9,0,12,8)
//使用RDD编程实现,方案1
val rdd = sc.parallelize(data,3)
val max_value = rdd.reduce((a,b)=> if(a>b) a else b)
val min_value = rdd.reduce((a,b)=> if(a>b) b else a)
println("max_value:" + max_value)
println("min_value:" + min_value)
//使用RDD编程实现,方案2
val rdd = sc.parallelize(data,3)
val temp = rdd.mapPartitions(iterator => {
var min = Integer.MAX_VALUE
var max = Integer.MIN_VALUE
for(x <- iterator){
if(x>max) max = x
if(x<min) min = x
}
Iterator((min,max))
})
val result = temp.reduce((a,b)=>
{val min = if(a._1<= b._1) a._1 else b._1
val max = if(a._2 >= b._2) a._2 else b._2
(min,max)
})
//使用SparkSQL编程实现
import org.apache.spark.sql.functions._
val df = data.toDF("value")
df.agg(max("value") as "max_value",min("value") as "min_value").show
//任务:排序并返回序号
val data = List(1,7,8,5,3,18,34,9,0,12,8)
//使用RDD编程实现:方案1
val rdd = sc.parallelize(data,3)
val len = rdd.count
val sortedrdd = rdd.map((_,1)).sortByKey().map(_._1).repartition(1)
val index = sc.parallelize(0 to len.toInt-1,1)
index.zip(sortedrdd).collect
//使用RDD编程实现:方案2
val rdd = sc.parallelize(data,3)
val sortedrdd = rdd.map((_,1)).sortByKey().map(_._1).repartition(1)
var idx = -1
sortedrdd.map(value => {
idx+=1
(idx,value)
}).collect
Spark编程练习题的更多相关文章
- 《Spark快速大数据分析》—— 第六章 Spark编程进阶
这章讲述了Spark编程中的高级部分,比如累加器和广播等,以及分区和管道...
- 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用
今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.spl ...
- Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spar ...
- Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语 ...
- Spark中文指南(入门篇)-Spark编程模型(一)
前言 本章将对Spark做一个简单的介绍,更多教程请参考:Spark教程 本章知识点概括 Apache Spark简介 Spark的四种运行模式 Spark基于Standlone的运行流程 Spark ...
- Spark编程实现SQL查询的实例
1.Oracle中的SQL select count(1) from a_V_PWYZL_CUSTACCT_PSMIS t where not exists (select 1 from tb_sho ...
- 6、50道JAVA基础编程练习题跟答案
50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...
- Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN
Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...
- Spark:Spark 编程模型及快速入门
http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 代码中初始化 我们 ...
随机推荐
- [POI2005]SAM-Toy Cars 贪心+堆
[POI2005]SAM-Toy Cars 题目:Jasio 是一个三岁的小男孩,他最喜欢玩玩具了,他有n 个不同的玩具,它们都被放在了很高的架子上所以Jasio 拿不到它们:为了让他的房间有足够的空 ...
- mysql时间SQL
生成随机时间 -- 带时分秒 select FROM_UNIXTIME(UNIX_TIMESTAMP('20100101000000')+ROUND(RAND()*(UNIX_TIMESTAMP()- ...
- 50个你必须了解的Kubernetes面试问题
Kubernetes一直是当今业界的流行语,也是最好的编排工具.它吸引了许多想要提升自己职业生涯的经验丰富的专业人士.HuaWei,Pokemon,Box,eBay,Ing,Yahoo Japan,S ...
- ASP。NET MVC的部分视图和部分模型
下载source - 1.7 MB 介绍 本文解决了返回视图内容包含表单元素的部分视图的问题. 代码重用是一种非常有用的节省时间的特性,任何优秀的工程师都会在他们的工作过程中构建许多有用的函数.对于W ...
- RHSA-2017:2907-重要: wpa_supplicant 安全更新
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...
- ansible-playbook模板化(jinja2)
1. ansible-playbook模板化(jinja2)条件与循环 1.1) jinja使用结构图 2. 编写jinja2的循环 2.1) 编写jinja2模板 1 [root@test-1 ...
- WGS-84 to Web mercator
function mercator_encrypt (wgsLat, wgsLon) { var x = wgsLon * 20037508.34 / 180.; var y = Math.l ...
- 多测师讲解自动化测试_rf运行无日志(解决方法)_高级讲肖sir
rf运行无日志(解决方法) 出现现象: 方法: 1.先在套件里面导入OperatingSystem库 2.在套件中新建一个关键字套件点击右键选择new user keyword关键 字的名称为:kil ...
- 扫描仪扫描文件处理-ABBYY自动矫正图像歪斜
修改界面语言: 设置为不识别图片文字(因为我们只需要把图片歪斜校正): 保存无损彩色格式:
- 【数论】HAOI2012 容易题
题目大意 洛谷链接 有一个数列A已知对于所有的\(A[i]\)都是\(1~n\)的自然数,并且知道对于一些\(A[i]\)不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的 ...