认识:最核心的编程抽象就是DataFrame。
原理:将Spark SQL 转化为 RDD, 然后提交到集群执行。
SparkSession:统一的切入点,实质上是SQLContext和HiveContext的组合。允许用户通过它调用 DataFrame 和 Dataset 相关 API 来编写程序
DataFrame:以RDD为基础的分布式数据集,二维表格。schemaRDD,比RDD多了一个表头信息(Schema)。DataFrame是用来处理结构化数据的
RDD:弹性分布式数据集.是Spark对数据进行的一种抽象,可以理解为Spark对数据的一种组织方式。更简单些说,RDD 里面包含了数据和操作数据的方法。关键字:弹性,分布式,数据集
DataSet:对于RDD而言,DataSet做了强类型支持,在RDD的每一行都做了数据类型约束。RDD转换DataFrame后不可逆,但RDD转换Dataset是可逆的。
RDD转换成dataframe:
- 反射:根据RDD对象的具体类型映射,推导出schema,也就是反射
- 通过显式的程序代码构造schema,然后将schema应用到RDD上,最后转换成DataSet
-----------------------------------------------------------------------------------------------------------------
SparkSession sparkSession = SparkSession.builder().master("local")
.appName("Java Spark SQL")
.getOrCreate();
Dataset<Row> dataset = sparkSession.read().json("URL");
//只返回name字段
dataset.select("name").show();
//返回两个字段,所有age的value+1
dataset.select(col("name"),col("age").plus(1)).show();
//选择age大于21岁的人
dataset.filter(col("age").gt(21)).show();
//分组聚合,group age
dataset.groupBy("age").count().show();
/

本文介绍了Spark SQL编程的核心概念,包括SparkSession作为统一的切入点,DataFrame作为处理结构化数据的主要对象,以及RDD作为Spark的基础分布式数据集。讨论了如何将RDD转换为DataFrame,涉及反射和显式构造schema的方法,强调了RDD转DataFrame的不可逆性和RDD转DataSet的可逆性。
最低0.47元/天 解锁文章
2794

被折叠的 条评论
为什么被折叠?



