Spark SQL
Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。
Spark SQL特点
易整合。无缝的整合了 SQL 查询和 Spark 编程
统一的数据访问。使用相同的方式连接不同的数据源
兼容 Hive。在已有的仓库上直接运行 SQL 或者 HQL
标准数据连接。通过 JDBC 或者 ODBC 来连接
DataFrame和DataSet
DataFrame类似于表格,列名代表含义,行索引和列索引可以指定或默认。
DataSet:具有强类型的数据集合,需要提供类型信息。可以通过样例类序列或基本训练来创建。
创建DataFrame
使用Spark Session读取数据,支持从JSON文件读取数据并展示。
输入df.show展示数据
RDD与DataSet转换:RDD可以通过toDS()方法转换为DataSet,DataSet可以通过toDF()方法转换为DataFrame。
DataFrame与DataSet转换:DataFrame可以通过as[Type]方法转换为DataSet,DataSet可以通过toDF()方法转换为DataFrame。
RDD、DataFrame、DataSet的关系与区别
关系:
都是Spark平台下的分布式弹性数据集。
都有惰性机制,只有在遇到行动算子时才会执行。
都支持自动缓存和分区。
都可以使用模式匹配获取字段值和类型。
区别:
RDD:主要用于机器学习(MLLIB),不支持Spark SQL操作,数据类型为原始类型。
DataFrame:数据类型固定为ROW,每一列的值需要解析才能获取,支持Spark SQL操作。
DataSet:每一行的数据类型明确,支持强类型操作,支持Spark SQL操作。
转换方法
RDD转DataFrame/DataSet:使用toDF()和toDS()方法。
DataFrame转RDD/DataSet:使用rdd属性和as[Type]方法。
DataSet转DataFrame/RDD:使用toDF()和rdd属性。