分组后,求多个聚合值(最值、平均值等)。使用算子groupBy+agg
若需要直接求count、max、min的情况,groupBy中不传值
从文件创建:调用sc.textFile,按行解析为rdd
从集合创建:调用sc.parallelize,按行解析为rdd
List,toDF:使用List[Tuple]包装每行记录,结合toDF接口,转化为DataFrame
Seq,toDF:使用Seq[Tuple]包装每行记录,结合toDF接口,借助隐式转换,生成DataFrame
RDD,StructType:推荐使用RDD和schema,生成DataFrame
RDD,StructType:补充,单个元素构成一行记录,使用Row.apply()
RDD,StructType:补充,多个元素构成一行记录,使用Row.fromSeq()
创建DataSet,与DataFrame区别在于DataFrame对每个字段的类型要求强一致,DataSet对每行记录的类型要求强一致
List.map(beanClass(_)):使用case class包装每行记录,借助case class参数列表定义字段信息,每个属性名都会成为DataFrame的列名
RDD.map(beanClass(_)):使用RDD,生成createDataFrame
DF转化为DataSet
分组后,求多个聚合值(最值、平均值等)。使用算子groupBy+agg
若需要直接求count、max、min的情况,groupBy中不传值
从文件创建:调用sc.textFile,按行解析为rdd
从集合创建:调用sc.parallelize,按行解析为rdd
List,toDF:使用List[Tuple]包装每行记录,结合toDF接口,转化为DataFram
RDD,StructType:推荐使用RDD和schema,生成DataFrame
RDD,StructType:补充,单个元素构成一行记录,使用Row.apply()
RDD,StructType:补充,多个元素构成一行记录,使用Row.fromSeq()
创建DataSet,与DataFrame区别在于DataFrame对每个字段的类型要求强一致,DataSet对每行记录的类型要求强一致
List.map(beanClass(_)):使用case class包装每行记录,借助case class参数列表定义字段信息,每个属性名都会成为DataFrame的列名
RDD.map(beanClass(_)):使用RDD,生成createDataFrame
DF转化为DataSet
读取文件
val df = spark.read.json("test.json")
val df = spark.read.csv("test.csv")
val df = spark.read.jdbc("test.jdbc")
val df = spark.read.orc("test.orc")
val df = spark.read.parquet("test.parquet")
val df = spark.read.textFile("test.txt")
val df = spark.read.format("com.databricks.spark.avro").load("test.avor")
val df = spark.read.option("header","true").csv("test.txt")
Original: https://blog.csdn.net/ljp7759325/article/details/124099713
Author: 鱼摆摆
Title: 【极简spark教程】SparkSQL、DataSets、DataFrames
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678123/
转载文章受原作者版权保护。转载请注明原作者出处!