1、是什么
-
SparkSQL是Spark的一个模块,用于处理结构化数据,提供了新的数据抽象DataFrame和Dataset
特点
-
兼容性 可以在同一个Spark任务中混合使用SQL处理和算子编程, SparkSQL中RDD可以进行算子编程,DF和DS可以支持SQL操作,RDD、DF、DS之间可以互相转换。
-
统一的数据访问 SparkSQL可以使用相同的API访问各种常见的数据源
-
文本格式: text csv json
-
列式存储: parquet orc
-
数据库: jdbc
-
-
完全兼容Hive 可以使用SparkSQL读取已经存在的hive数据仓库,由于SparkSQL内部集成了Hive的所有功能模块,所以对Hive的库和表,UDF等完全兼容
-
提供标准数据库连接 SparkSQL提供JDBC\ODBC连接,用于提供客户端的远程访问
2、认识新的API
-
程序入口: SparkSession
-
数据抽象: DataFrame Dataset
package com.zch.spark.sql.exercise import org.apache.spark import org.apache.spark.sql import org.apache.spark.sql.{DataFrame, SparkSession} /** * Author: zhaoHui * Date: 2021/12/20 * Time: 15:05 * Description: */ object SparkSQL_Exercise_Demo01 { def main(args: Array[String]): Unit = { // 获取SparkSession对象 val spark = new sql.SparkSession.Builder() .appName("demo01") .master("local[2]") .getOrCreate() // 使用SparkSession,创建DataFrame val df:DataFrame = spark.read .format("json") .load("C:\\Users\\Administrator\\Desktop\\employees.json") // 创建临时图标 df.createTempView("t1") // 使用SQL语句 val dataFrame = spark.sql( """ |select * from `t1` |""".stripMargin) // 展示查询信息 dataFrame.show() // 将查询结果以 Excel 保存到本地 dataFrame.write.format("csv").save("C:\\Users\\Administrator\\Desktop\\test") } }
SparkSQL默认使用parquet作为输入输出格式 也支持如下几个常用格式 文本格式: text csv json 列式存储: parquet orc 数据库: jdbc
-
SparkSQL 数据输入输出语法
-
输出为不同的格式
输出 dataFrame.write .format("指定输出格式") .mode(SaveMode) //设置输出的存储模式 .save("输出路径")
// json dataFrame .write .format("json") .save("C:\\Users\\Administrator\\Desktop\\json") // parquet dataFrame .write .format("parquet") .save("C:\\Users\\Administrator\\Desktop\\parquet") // orc dataFrame .write .format("orc") .save("C:\\Users\\Administrator\\Desktop\\orc") // default dataFrame .write .save("C:\\Users\\Administrator\\Desktop\\default")