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编程练习题的更多相关文章

  1. 《Spark快速大数据分析》—— 第六章 Spark编程进阶

    这章讲述了Spark编程中的高级部分,比如累加器和广播等,以及分区和管道...

  2. 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用

    今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.spl ...

  3. Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spar ...

  4. Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语 ...

  5. Spark中文指南(入门篇)-Spark编程模型(一)

    前言 本章将对Spark做一个简单的介绍,更多教程请参考:Spark教程 本章知识点概括 Apache Spark简介 Spark的四种运行模式 Spark基于Standlone的运行流程 Spark ...

  6. Spark编程实现SQL查询的实例

    1.Oracle中的SQL select count(1) from a_V_PWYZL_CUSTACCT_PSMIS t where not exists (select 1 from tb_sho ...

  7. 6、50道JAVA基础编程练习题跟答案

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...

  8. Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN

    Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...

  9. Spark:Spark 编程模型及快速入门

    http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 代码中初始化 我们 ...

随机推荐

  1. BUUCTF-[极客大挑战 2019]PHP 1

    打开题目,我们就看到这个猫,先是用鼠标晃了晃,还跟着我的光标摇脑袋.我是来做题的.前端工程师肯定也对这个下功夫了. 有一个良好的备份网站的习惯很好啊,我们首先根据题目的提示,用dirsearch扫目录 ...

  2. devops-jenkins-Pipeline实战

    1) 配置gitlab的分支项目 点击红色标记的创建 project 项目 点击Create project创建Pipeline-demo项目 项目创建完成,然后我们创建一个Add README 然后 ...

  3. volatile型变量语义讲解一 :对所有线程的可见性

    volatile型变量语义讲解一 :对所有线程的可见性 一.volatile变量语义一的概念 当一个变量被定义成volatile之后,具备两个特性: 特性一:保证此变量对所有线程的可见性.这里的&qu ...

  4. 2017年 实验四 B2C模拟实验

    实验四 B2C模拟实验                [实验目的] 掌握网上购物的基本流程和B2C平台的运营 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网. (3).奥派电子商 ...

  5. 扫描仪扫描文件处理-Photoshop批处理弹出色阶设置框解决

    为什么我录制动作明明设置的有色阶,最后批处理的时候仍然弹出了色阶设置框?   出现问题原因可能是你在录入设置色阶动作的时候,是彩色图片或者灰阶中的一种,而批处理的时候遇到了另外一种色彩模式.所以动作中 ...

  6. 为什么说 Python 内置函数并不是万能的?

    本文出自"Python为什么"系列,请查看全部文章 在Python猫的上一篇文章中,我们对比了两种创建列表的方法,即字面量用法 [] 与内置类型用法 list(),进而分析出它们在 ...

  7. docker启动服务---------------redis

    1. docker拉取镜像 docker pull redis 2 建立配置目录和准备配置文件 mkdir -p /usr/local/docker-redis && cd /usr/ ...

  8. centos8平台使用iostat监控磁盘io

    一,iostat所属的包: [root@centos8 ~]# whereis iostat iostat: /usr/bin/iostat /usr/share/man/man1/iostat.1. ...

  9. react渲染数据3种方式

    直接渲染,()类似于模板字符串,包裹一个dom元素 ReactDOM.render( (<div> <h2>现在时间:{new Date().toLocaleTimeStrin ...

  10. Redis入门之认识redis(一)

    第1章 非关系型数据库 1.1 NoSQL数据库概述 1) NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库. NoSQL 不 ...