SparkSQL的优势:

写更少的代码
读更少的数据(SparkSQL的表数据在内存中存储不使用原生态的JVM对象存储方式,而是采用内存列存储)
使用高效的数据格式
使用列数存储
谓词下推
提供更好的性能(字节码生成技术、SQL优化)
号称比MapReduce快100倍
强大的SQL 优化器 Catalyst

Spark SQL 数据抽象

DataFrame和DataSet

DataFrame

DataFrame更像传统数据库的二维表格,除了数据之外,还记录数据的结构信息,即schema

DataFrame也支持嵌套数据类型(struct、array和map)

Dataframe的劣势在于在编译期缺少类型安全检查,导致运行时出错

DataSet

DataSet会逐步取代 RDD 和 DataFrame 成为唯一的API接 口

与DataFrame相比,保存了类型信息,是强类型的,提供了编译时类型检查

调用Dataset的方法先会生成逻辑计划,然后Spark的优化器进行优化,最终生成物理计划,然后提交到集群中运行

DataFrame表示 为DataSet[Row],即DataSet的子集

Row & Schema

DataFrame = RDD[Row] + Schema;DataFrame 的前身是 SchemaRDD

Row是一个泛化的无类型 JVM object

对DataFrame和Dataset进行操作时,都需要import spark.implicits._

Dataset每一行的类型都是一个case class,在自定义了case class之后可以很自由的获得每一行的信息

Spark SQL的数据类型

sparksql的数据类型官网

作者 admin

张宴银,大数据开发工程师

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注