spark知识点

hive中 concat_ws(’_’,‘a’, cast(1 as string )) concat_ws是字符串连接,cast as 对类型进行转换
collect_set去除重复元素;collect_list不去除重复元素
进入spark
import spark
sql(“select * from 表名”).show()

spark的安装

1.vim spark-env.sh
export SCALA_HOME=
export JAVA_HOME=
export HADOOP_HOME=
export HADOOP_CONF_DIR= H A D O O P H O M E / e t c / h a d o o p S P A R K M A S T E R I P = m a s t e r S P A R K L O C A L D I R S = / u s r / l o c a l / s r c / s p a r k − 2.0.2 − b i n − h a d o o p 2.6 S P A R K D R I V E R M E M O R Y = 1 G 2. v i m s l a v e s s l a v e 1 s l a v e 23. v i m   . / b a s h r c e x p o r t S C A L A H O M E = e x p o r t S P A R K H O M E = e x p o r t P A T H = : HADOOP_HOME/etc/hadoop SPARK_MASTER_IP=master SPARK_LOCAL_DIRS=/usr/local/src/spark-2.0.2-bin-hadoop2.6 SPARK_DRIVER_MEMORY=1G 2.vim slaves slave1 slave2 3.vim ~./bashrc export SCALA_HOME= export SPARK_HOME= export PATH=: HADOOPHOME/etc/hadoopSPARKMASTERIP=masterSPARKLOCALDIRS=/usr/local/src/spark2.0.2binhadoop2.6SPARKDRIVERMEMORY=1G2.vimslavesslave1slave23.vim ./bashrcexportSCALAHOME=exportSPARKHOME=exportPATH=:SCALA_HOME/bin:$SPARK_HOME/bin
4.将所有的配置好的master上的文件拷贝到slave1和slave2中
5.启动集群 start-all.sh

scala

1.scala word count
数据导入

import scala.io.Source
val lines=Source.fromfile("文件路径").getLines().toList
//将迭代器中的元素放入列表中进行返回 
//判断有多少行
lines.length
//lines:scala.io.BufferedSource=non-empty iterator lines=Source.fromfile("文件路径")
//理解Range:本质是一种特殊的Array数组
val a=Range(0,5) //左闭右开 步长为1  等价于 val a =0 until 5
val a=1 to 5 //左闭右闭  等价于 val a=1.to(5)
//将Range转化为list
val b=a.toList
//理解map
a.map(x=>x*2) //返回的类型为vector
//访问vector对象,使用方式通过将索引圆括号进行访问
//遍历vector 进行for循环
for(i<-b) print(i+"")
//理解_
//1.集合中的每一个元素
a.map(x=>x*2)==a.map(_*2)//true
//2.获取tuple中的元素
val s=("aa","bb")
s._1="aa"
s._2="bb"
//3.导入所有的包
import scala.io._
//4.变量的初始化
val a=1 //变量不可以进行更改赋值
var a=1 //变量可以进行更改
var name:String=_ //name:String=null
var score:Int=_ //score:Int=0
// 针对每一行数据,进行单词切割
lines.map(_.split(" ")) // 等价于lines.map(x=>x.split(" "))
//理解flatten函数 该函数进行压平展开
val lol = List(List(1,2), List(3,4))
lol: List[List[Int]] = List(List(1, 2), List(3, 4))
val result = lol.flatten
result: List[Int] = List(1, 2, 3, 4)
//flatMap函数先Map然后再进行flat
val lol = List(List(1,2), List(3,4))
var result = lol.flatten
println(result.map(_*2))
println(lol.flatMap(_.map(_*2))) //这两个输出是一样的
//通过两种方式对单词进行打散
lines.map(_.map(_.split(" "))).flatten
lines.flatMap(_.split(" "))
// 对每一个单词进行计数
lines.flatMap(_.split(" ")).map((_,1))
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1) 
//返回的是Map形式,Map(forgotten->List((forgotten,1),(forgotten,1),(forgotten,1)))
//_1:forgotten  _2:List((forgotten,1),(forgotten,1),(forgotten,1))
//整个list的大小可以作为该单词出现的次数
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.size))
等价于
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.length))
//对第二个元素进行求和
var a1=List((1,2),(3,4),(5,6))
a1.map(_._2).sum() 
等价于
a1.map(_._2).reduce(_+_)
//reduce 理解
//reduce分为reduceLeft和reduceRight  reduce默认为reduceLeft
(1 to 9).reduceLeft( _ * _) //相当于1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 
(1 to 9).reduceLeft( _ + _) //相当于1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 
(1 to 9).reduce(_ + _) //默认是reduceLeft
//需求:不能通过上面的list大小计算单词出现的次数
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum))
等价于
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).reduce(_+_)))
//sortBy():函数从小到大排序 或者sortWith(_<_)  sortBy().reverse:从大到小排序 或者sortWith(_>_)
var b=List((3,4),(2,3))
b.sortBy(_._2)
//需求:获取单词出现频次的topN(前N个值)
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum)).toList.sortBy(_._2).reverse.slice(0,N)
等价于
lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).mapValues(_.size).toList.sortBy(_._2).reverse.slice(0,N)

iterator it(迭代器):不是一个集合,可以用于访问集合的方法
it.next():返回迭代器中下一个元素,同时更新迭代器状态
it.hasNext():检查集合中是否存在元素

Hadoop和Spark是大数据处理领域中最流行的两个框架。以下是它们的知识点整理汇总: Hadoop: 1. Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。 2. Hadoop包括两个核心组件:HDFS(Hadoop分布式文件系统)和MapReduce(分布式计算框架)。 3. HDFS是一个分布式文件系统,用于存储大规模数据集。它将数据分成块并存储在不同的节点上,以实现数据的高可靠性和可扩展性。 4. MapReduce是一种分布式计算框架,用于处理大规模数据集。它将数据分成小块并在不同的节点上并行处理,以实现高效的数据处理。 5. Hadoop还包括其他组件,如YARN(资源管理器)和HBase(分布式NoSQL数据库)。 Spark: 1. Spark是一个快速、通用、可扩展的分布式计算框架,用于处理大规模数据集。 2. Spark的核心组件是Spark Core,它提供了分布式任务调度、内存计算和数据处理功能。 3. Spark还包括其他组件,如Spark SQL(用于结构化数据处理)、Spark Streaming(用于实时数据处理)和MLlib(用于机器学习)。 4. Spark使用RDD(弹性分布式数据集)作为其基本数据结构,它是一个可分区、可并行计算和可恢复的数据集合。 5. Spark支持多种编程语言,如Scala、Java、Python和R。 总结: Hadoop和Spark都是用于处理大规模数据集的分布式计算框架,它们有不同的核心组件和特点。Hadoop主要用于存储和处理大规模数据集,而Spark则更加注重数据处理的速度和效率。在实际应用中,可以根据具体需求选择合适的框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值