目录
SparkSQL
一、什么是SparkSQL?
Spark SQL是Spark的一个模块,用于处理结构化的数据,它提供了一个数据抽象DataFrame并且作为分布式SQL查询引擎的作用。
Spark SQL就是将SQL转换成一个任务,提交到集群上运行,类似于Hive的执行方式。
二、Spark SQL的特点
1.Spark SQL已经集成在Spark中
2.提供了统一的数据访问方式:JSON、CSV、JDBC、Parquet等都是使用统一的方式进行访问
3.兼容Hive
4.支持标准的数据连接:JDBC、ODBC
DataFrame
一、什么是DataFrame?
DataFrame是组织成命名列的数据集。它在概念上等同于关系数据库中的表,但在底层具有更丰富的优化。关系型数据库中的表由表结构和数据组成,而DataFrame也类似,由schema(结构)和数据组成,其数据集是RDD。DataFrame可以从各种来源构建,如结构化的数据文件(csv)、Hive中的数据、外部数据库或者现有的RDD。DataFrame API支持的语言有Java、Scala、Python和R。
二、创建DataFrame
创建DataFrame有三种方法:使用样本类,使用SparkSession以及通过带有格式的数据文件(JSON)来创建
测试数据
员工表 字段说明
部门编号 empno:Int,
员工名 ename:String,
职位 job:String,
经理 mgr:String,
入职日期 hiredate:String,
工资 sal:Int,
奖金 comm:String,
部门编号 deptno:Int
1.使用样本类创建DataFrame
(1)创建一个样本类用来存储员工表的结构
case class Emp(empno:Int,ename:String,job:String,mgr:String,hiredate:String,sal:Int,comm:String,deptno:Int)
(2)通过sc导入emp.csv,并且根据分隔符来做切分
val line=sc.textFile("hdfs://centos:9000/emp.csv").map(_.split(","))
(3)将数据和表结构关联起来
val emp=line.map(x=>Emp(x(0).toInt,x(1),x(2),x(3),x(4),x(5).toInt,x(6),x(7).toInt))
(4)根据上面通过样本类实例化的对象生成DataFrame
val empDF =emp.toDF
(5)然后就可以通过命令来对表内容和表结构进行查看了