绿色为接口,蓝色为具体实现类。
元组Tuple
访问数据 :
val t1=(1,2,"a",true,"b")
println(ti._顺序号) //用顺序号访问元组第一个元素,从1开始
println(t1.productElement(0)) //访问元组第一个元素,从0开始
列表 List
元素的追加
RDD-----即一个装数据的容器
是 Spark 提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,以函数式操作集合的方式进行各种并行操作。
通俗点来讲,可以将 RDD 理解为一个分布式对象集合,本质上是一个只读的分区记录集合。每个 RDD 可以分成多个分区,每个分区就是一个数据集片段。一个 RDD 的不同分区可以保存到集群中的不同结点上,从而可以在集群中的不同结点上进行并行计算。
使用集合创建RDD
sc.makeRDD(List(1,2,3,4))
val rdd=sc.makeRDD(List(1,2,3,4,5,6))
例子:找偶数
2021.04.29
spark.read.json("file:///opt/module/spark-local/examples/src/main/resources/people.json")
spark.read.json("file:///opt/module/spark-local/examples/src/main/resources/people.json").show
val rdd=sc.textFile("file:///opt/module/spark-local/examples/src/main/resources/people.txt")
rdd.collect
import spark.implicits._
case class People(name:String,age:Int)
//---
People("andy",20)
//----
val mapRDD=rdd.map{x=>{val item=x.split(",");People(item(0).trim(),item(1).trim().toInt)}}
//trim 去空格
mapRDD.toDF.show
//sparksql
val df=mapRDD.toDF
df.createOrReplaceTempView("people")
spark.sql("select * from people").show
spark.sql("select * from people where age>20").show
//联合math 和bigdata
df1.createOrReplaceTempView("bigdata")
df2.createOrReplaceTempView("math")
spark.sql("select m.id,(m.score+b.score) from math m,bigdata b where m.id = b.id").show
//df转ds --- rdd中间
df=mapRDD.toDF
df.collect
//df --> ds
val ds = df.as[People]
ds.collect
//ds ---> rdd
val r = ds.rdd
r.collect
//rdd ---> df
val df = r.toDS
df.collect
//可以直接输出
//ds只需要知道名字
ds.foreach(line=>{println(line.name+" "+line.age)})
//df需要知道位置
df.foreach(line=>{println(line.get(0)+" "+line.get(1))})
spark streaming