SparkSQL 简单总结一下和一个WC案例

SparkSQL总结:

一、Spark SQL

是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame,并且作为分布式SQL查询引擎的作用

二、什么是DataFrames??

与RDD类似,DataFrames也是一个分布式数据容器;然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema;
同时与Hive类似,DataFrame也支持嵌套数据类型(struct,array,map).

三、创建dataframe的两种方式:

通过数据源采集直接创建成DF格式(spark.read.json(Path))
通过StructType创建Schema,通过createDataFrame来创建DF
DataFrame与DataSet与RDD互相转换
(1)DataFrame -> DataSet
val dataSet = dataFrame.as[Person]
(2)DataSet -> DataFrame
val dataFraem = dataSet.toDF()
(3)DataFrame -> RDD
val RDD = dataFrame.rdd

四、DataFrame两种风格语法常用操作

1、DSL(领域特定语言)风格操作

2、SQL风格操作
DataFrame的一个强大之处就是我们可以将它看作是一个关系型数据表,然后可以通过在程序中使用spark.sql() 来执行SQL语句查询,结果返回一个DataFrame:
spark.sql(“SQL语句”).show
如果想使用SQL风格的语法,需要将DataFrame注册成表:
personDF.registerTempTable(“t_person”)

五、DataSet和DataFrame的区别

1、DataSet包含了DataFrame的功能,Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集。
2、相比DataFrame,Dataset提供了编译时类型检查,对于分布式程序来讲,提交一次作业太费劲了(要编译、打包、上传、运行),
到提交到集群运行时才发现错误,这会浪费大量的时间,这也是引入Dataset的一个重要原因。

3、DS状态的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解 Person类的内部结构。
而DataFrame却提供了详细的结构信息,使得Spark SQL可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么,D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值