Spark SQL

SparkSQL是Spark生态中处理结构化数据的模块,通过SparkSession作为入口。它整合了Hive,提供DataFrame和Dataset编程模型。内容包括SparkSession的创建、Schema概念、DataFrame与Dataset的构建及转换,以及SparkSQL的读写操作和函数应用。
摘要由CSDN通过智能技术生成

SparkSQL是Spark生态栈中处理结构化数据的一个模块。

特点:

  • 可集成
  • 统一数据入口
  • 整合Hive
  • 标准连接

SparkSession的创建和初始化

Spark中编程的入口,就是各种各样的Context,在SparkSQL也不例外,Spark1.6以前,SparkSQL唯一的入口就是SQLContext,及其子类HiveContext,在Spark1.6之后,便又提供了一个SQLContext和HiveContext的集成者——SparkSession。此时SparkSession就成为了SparkSQL的入口,当然这些不管是SQLContext还是HiveContext还是SparkSession,其底层仍然依赖的是SparkContext。

添加依赖

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-sql_2.11</artifactId>
  <version>2.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-hive -->
<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-hive_2.11</artifactId>
  <version>2.2.2</version>
</dependency>

SparkSession的构建

2.2.2.编程
/**
  * SparkSQL编程初体验
  * SparkSQL解决了问题?
  *     在Spark生态栈中,专门用于处理结构化数据的。
  * 入口:SparkSession
  * 编程模型:DataFrame或者Dataset
  */
object _01SparkSQLOps {
    def main(args: Array[String]): Unit = {

        val spark = SparkSession.builder()//构建一个SparkSession
                    .master("local[*]")
                    .appName("SparkSQLOps")
                    .getOrCreate()
        //早期的SQLContext和HiveContext的构建
//        val sqlContext = new SQLContext(sparkContext)
//        val hiveContext = new HiveContext(sparkContext)

        //加载外部文件
        val pdf:DataFrame = spark.read.json("file:///E:/data/spark/sql/people.json")
        println("----------------schema约束信息-----------")

        //元数据信息-约束信息,DataFrame其实在早期叫做SchemaRDD
        //pdf.schema//StructType--->是对应于整张表而言,
        具体的schema信息是StructFile---->是对应与一张表中的某一个字段/列(列名,类型,是否为null)
        pdf.printSchema()
        println("---------------表的内容-----------------")
        pdf.show()//查看当前DataFrame二维表中的数据 select * fr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值