SparkSQL学习(一)SparkSQL简单使用

本文介绍了SparkSQL的发展历程,重点讲解了SparkSQL的核心概念DataFrame和SparkSession,以及如何从RDD转换为DataFrame。此外,还详细阐述了DataFrame的read和save操作,以及如何使用不同数据源如json、parquet、Mysql和Hive。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、SparkSQL的进化之路

1.0以前:

      Shark

1.1.x开始:

     SparkSQL(只是测试性的)  SQL

1.3.x:

     SparkSQL(正式版本)+Dataframe

1.5.x:

    SparkSQL 钨丝计划

1.6.x:

     SparkSQL+DataFrame+DataSet(测试版本)

1.x:

     SparkSQL+DataFrame+DataSet(正式版本)

     SparkSQL:还有其他的优化

     StructuredStreaming(DataSet)

2、认识SparkSQL

2.1、什么是SparkSQL

SparkSQL是Spark的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象就是DataFrame。

2.2、SparkSQL的作用

提供一个编程抽象(DataFrame)并且作为分布式SQL查询引擎。

DataFrame:它可以根据很多源进行构建,包括:结构化的数据文件,Hive中的表,外部的关系型数据库,以及RDD

2.3、运行原理

将SparkSQL 转化为 RDD ,然后提交到集群执行。

2.4、特点

(1)容易整合

(2)统一的数据访问方式

(3)兼容Hive

(4)标准的数据连接

2.5、SparkSession

SparkSession是Spark 2.0引如的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。 

在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用StreamingContext;对于sql,使用sqlContext;对于Hive,使用hiveContext。但是随着DataSet和DataFrame的API逐渐成为标准的API,就需要为他们建立接入点。所以在spark2.0中,引入SparkSession作为DataSet和DataFrame API的切入点,SparkSession封装了SparkConf、SparkContext和SQLContext。为了向后兼容,SQLContext和HiveContext也被保存下来。 

SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext,所以计算实际上是由sparkContext完成的。

特点:

   ---- 为用户提供一个统一的切入点使用Spark 各项功能

        ---- 允许用户通过它调用 DataFrame 和 Dataset 相关 API 来编写程序

        ---- 减少了用户需要了解的一些概念,可以很容易的与 Spark 进行交互

     ---- 与 Spark 交互之时不需要显示的创建 SparkConf, SparkContext 以及 SQlContext,这些对象已经封闭在 SparkSession 中

2.6、DataFrames

在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame与RDD的主要区别在于,前者带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。这使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标,反观RDD,由于无从得知所存数据元素的具体内部结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值