寒假学习进度8

今天继续学习spark双value算子

(1)

def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator15")
val sc = new SparkContext(sparkConf)

//value,数据源类型要保持一致,拉链类型可以不一致

//会报错,因为拉链分区数量要保持一致,并且分区中的数量要一致
val rdd1: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4,5,6),2)
val rdd2: RDD[Int] = sc.makeRDD(List(3, 4, 7, 8),4)

//拉链
val rdd6: RDD[(Int, Int)] = rdd1.zip(rdd2)
println(rdd6.collect().mkString(","))

sc.stop()
}

(2)partitionBy

def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator15")
val sc = new SparkContext(sparkConf)

val rdd = sc.makeRDD(List(1, 2, 3, 4),2)

//int类型转换成taper类型
val maprdd: RDD[(Int, Int)] = rdd.map((_, 1))

//partitionBy根据指定的分区规则对数据重新分区
maprdd.partitionBy(new HashPartitioner(2)).saveAsTextFile("output")


sc.stop()
}

(3)reduceByKey

def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator15")
val sc = new SparkContext(sparkConf)

val rdd = sc.makeRDD(List(("a",1),("a",2),("a",3),("b",1)))

//reduceByKey,相同的key的数据进行value数据的聚合操作
//[1,2]
//[3,3]
//[6]
val reducerdd: RDD[(String, Int)] = rdd.reduceByKey((x: Int, y: Int) => {
x + y
})

reducerdd.collect().foreach(println)


sc.stop()
}

(4)groupByKey

def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator15")
val sc = new SparkContext(sparkConf)

val rdd = sc.makeRDD(List(("a",1),("a",2),("a",3),("b",1)))

//groupByKey,将数据源中的数据,相同的key分在一个组中,形成一个对偶元祖
val grouprdd: RDD[(String, Iterable[Int])] = rdd.groupByKey()

grouprdd.collect().foreach(println)

sc.stop()
}

(5)aggregateByKey

def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator15")
val sc = new SparkContext(sparkConf)

val rdd = sc.makeRDD(List(("a",1),("a",2),("a",3),("a",4)),2)

//aggregateByKey操作函数柯里化,2个参数列表
//第一个参数列表,需要一个参数,表示初始值
//主要用于第一个key时,和value进行分区计算
//第二个参数列表需要2个参数
//第一个参数表示分区内的计算规则
//第二个参数表示分区间计算规则
rdd.aggregateByKey(0)(
(x,y)=>math.max(x,y),
(x,y)=>x+y
).collect().foreach(println)

sc.stop()
}

推荐这些文章:

寒假学习进度

今天完成学习了一个案例的实践和一些spark算子的学习
(1)join
def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator15") val sc = new SparkContext(sparkConf) val rdd1 = sc.makeRDD( List(("a",1),("b",2),("c",3)) ) val rdd2 = sc.makeRDD( List(("a",4),("b",...

Spark-寒假-实验5

1.Spark SQL 基本操作
  创建DataFrame
  
 
(1) 查询所有数据

  
 
(2) 查询所有数据,并去除重复的数据;

  
 
 
(3) 查询所有数据,打印时去除 id 字段;

  
 
 
(4) 筛选出 age>30 的记录;

 
 
(5) 将数据按 age 分组;

  
 
 
(6) 将数据按 name 升序排列;

  
 
 
(7) 取出前 3 行数据;

  
 
 
(8) 查询所有记...

2021-2022年寒假学习进度12

今天完成了scala面向对象编程的学习,并学习了scala集合中数组、list等使用。
同事今天完成了spark实验四

一、实验目的
 
(1) 熟悉Spark 的RDD 基本操作及键值对操作;
(2) 熟悉使用RDD 编程解决实际具体问题的方法。
 
二、实验平台
 
操作系统:Ubuntu16.04 Spark 版本:2.1.0
 
三、实验内容和要求
 
1. spark-shell 交互式编程
 
请到本教程官网的“下载专区”的“数据集”中下载 chap...

大三寒假学习 spark学习 第一个spark应用程序WorldCount

在spark-shell进行词频统计:
flatMap将每一行按空格才分成为单词,map映射生成键值对,将单词计数,reduceByKey将相同单词叠加
wordCount.collect()将结果汇集,针对集群

结果:

编写独立程序进行词频统计:
新建wordCount.scala写入以下代码

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object WordCount{
def main(ar...

大三寒假学习 spark学习 RDD的依赖关系和运行过程

窄依赖与宽依赖的区别:

窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区
宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区
Stage的划分:
   Spark通过分析各个RDD的依赖关系生成了DAG再通过分析各个RDD中的分区之间的依赖关系来决定如何划分Stage
根据RDD分区的依赖关系划分Stage:
  
 
Stage的划分:

 在DAG中进行反向解析,遇到宽依赖就断开
 遇到窄依赖就把当前的RDD加入到Stage中
 将窄依赖尽量划分在同一个Stage中,可以实现流水线计算

 ...

Spark RDD算子之关联操作 -- join、fullOuterJoin、leftOuterJoin、rightOuterJoin、subtractByKey

join
函数定义

def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]

def join[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (V, W))]

def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))]

可以把RDD1,RDD2中的相同的 key 给连接起来,类似于 sql 中的 join 操作;若有多个相同的 key 则连接多次,仔细查看比较运行结果
Scala版本

...

第五章_Spark核心编程_Rdd_行动算子_take

1.定义

/*
* 1.定义
* def take(num: Int): Array[T]
* 2.功能
* 返回一个由 RDD 的前 n 个元素组成的数组
*
* */

2.示例

object takeTest extends App {

val sparkconf: SparkConf = new SparkConf().setMaster("local").setAppName("distinctTest")

val sc: SparkContext = new SparkContext(sparkconf)

private ...

第五章_Spark核心编程_Rdd_行动算子_first

1.定义

/*
* 1.定义
* def first(): T
* 2.功能
* 返回 RDD 中的第一个元素
*
* */

2.示例

object firstTest extends App {

val sparkconf: SparkConf = new SparkConf().setMaster("local").setAppName("distinctTest")

val sc: SparkContext = new SparkContext(sparkconf)

private val rdd: RDD[Int] = sc...

第五章_Spark核心编程_Rdd_行动算子_count

1.定义

/*
* 1.定义
* def count(): Long
* 2.功能
* 返回 RDD 中元素的个数
*
* */

2. 示例

object countTest extends App {

val sparkconf: SparkConf = new SparkConf().setMaster("local").setAppName("distinctTest")

val sc: SparkContext = new SparkContext(sparkconf)

private val rdd: RDD[Int] =...

第五章_Spark核心编程_Rdd_distinct算子

1. 定义

/*
* 1. 定义
* def distinct(): RDD[T]
* 2. 功能
* 将Rdd 元素去重,返回去重后的Rdd
*
* */

object distinctTest extends App {

val sparkconf: SparkConf = new SparkConf().setMaster("local").setAppName("distinctTest")

val sc: SparkContext = new SparkContext(sparkcon...

文章标题:寒假学习进度8
文章链接:https://www.dianjilingqu.com/4363.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>