Spark DataFrame&DataSet
1、DataFrame产生背景
Google trend —>DataFrame
DataFrame不是spark SQL提出的,而是早起源于R、python
Spark RDD API vs MapReduce API Threshold
R/Pandas One machine
2、DataFrame概述
Dataset:分布式数据集 DataFrame:以列(列名、列的类型、列值)的形式构成的分布式数据集,按照列赋予不同的名称
Student
id:int
name:string
city:string
selecting .filtering ,aggregation and plotting structured data
3、DataFrame对比RDD
RDD分布式数据集
RDD:
java/scala ==> ivm
python ==>python runtime
DataFrame:
java/scala/python ==> Logic Plan
4、DataFrame基本API常用操作
5、DataFrame与RDD互操作之一
反射
使用反射来推断包含特定数据类型的RDD的元数据
使用DataFrame API 或者sql方式编程
5、DataFrame与RDD互操作之二:编程方式
DataFrame和RDD互操作的两种方式:
1)反射:case class 前提:事先需要知道你的字段、字段类型
2)编程:Row 如果第一种情况不能满足你的要求(事先不知道列)
3)选型:优先选择第一种
6、Dataset概述
分布式数据集,1.3 DataFrame出现 1.6 Dataset出现
DataFrame = Dataset[Row]
Dataset:强类型 typed case class
DataFrame:弱类型 Row
SQL:
select name from person; compile ok,result no
DataFrame:
df.select(“name’) compile no
df.select(“nname’) compile ok
Dataset
ds.map(line => line.itemid) compile no
注意:代表中标红是由于没有放到带有相应包的文件中