千叶之花

导航

Spark学习笔记01

SparkSession 在spark 2.x之后统一的

1.x 版本 里面spark SQL的编程入口点: SQLContext HiveContext
SQLContext : implicits._
HiveContext : implicits._
2.x版本 spark sql的编程入口点: SparkSession
SparkSession: implicits._

 

1、spark程序开发完成后,打包成jar包。

如何将jar包分发到 spark集群?
1、启动集群
启动master ./sbin/start-master.sh

启动worker
./bin/spark-class org.apache.spark.deploy.worker.worker spark://localhost.localdomain:7077

提交作业
./bin/spark-submit --master spark://localhost.localdomain:7077 --class WordCount /home/maixia/soft/imoocpro.jar


RDD常用function
map()
filter()
flatMap()
collect() 返回RDD的所有元素、
count() 计数
countByValue() 返回一个map表示唯一元素出现的个数
take(num) 返回几个元素
top(num) 返回前几个元素
takeOrdered(num)(ordering) 返回基于提供的排序算法的前几个元素
takeSample(withReplacement,num,[seed]) 取样例

reduce(func) 合并RDD中元素
接收一个函数,作用在RDD两个类型相同的元素上,返回新元素。
可以实现,RDD中元素的累加,计数,和其它类型的聚集操作。

fold(zero)(func) 与reduce()相似提供zero value
aggregate(zeroValue)(seqOp,combOp) 与fold()相似,返回不同类型
foreach(func) 对RDD的每个元素作用函数,什么也不返回

reduceByKey(func) 把相同key的结合
groupByKey() 把相同的key的values分组

combineByKey(createCombiner,mergeValue,mergeCombiners,partitioner)
把相同key的结合,使用不同的返回类型
遍历partition中的元素,元素的key,要么之前见过的,要么不是
如果是新元素,使用我们提供的createCombiner()函数
如果是这个partition中已经存在的key,就会使用mergeValue函数。
合计每个partition的结果的时候,使用mergeCombiners()函数。

mapValues(func) 函数作用于pairRDD的每个元素,key不变
flatMapValues(func) 符号化的时候使用
keys() 仅返回keys
values() 仅返回values
sortByKey() 按照key排序的RDD

spark sql介绍:
1、集成性: 在spark编程中无缝对接多种复杂的SQL;
2、统一的数据访问方式:以类似的方式访问多种不同的数据源,可以进行相关操作
spark.read.format("json").load(path)
spark.read.format("text").load(path)
spark.read.format("parquet").load(path)
spark.read.format("json").option("...","...").load(path)
3、兼容 Hive
4、标准数的数据连接:提供标准的JDBC/ODBS连接方式

spark SQL应用并不局限于SQL,还支持hive\JSON\Parquet文件的直接读取和操作。
SQL仅仅是Spark SQL中的一个功能而矣。

posted on 2023-04-05 23:10  千叶之花  阅读(19)  评论(0编辑  收藏  举报