DataFrame它不是spark sql提出来的,而是早期在R、Pandas语言就已经有了的
DataSet: A DataSet is a distributed collection of data. (分布式的数据集)
DataFrame:A DataFrame is a DataSet organized into named columns.
以列(列名,列类型,列值)的形式构成的分布式的数据集,按照列赋予不同的名称
student
id:int
name:string
city:string
概念
1)分布式的数据集,并且以列的方式组合的。相当于具有schema的RDD
2)相当于关系型数据库中的表,但是底层有优化
3)提供了一些抽象的操作,如select、filter、aggregation、plot
4)它是由于R语言或者Pandas语言处理小数据集的经验应用到处理分布式大数据集上
5)在1.3版本之前,叫SchemaRDD
DataFrame对比RDD
1)DataFrame不仅仅分布式数据集,并且有schema描述(按列存储,有对应列的描述)
2)运行环境
RDD:
java/scala ==> JVM
python ==> python runtime
DataFrame
java/scala/python ==> Logic Plan (最终性能一样)
DataFrame基本API常用操作
1)Create DataFrame
2)select
3)printSchema
4)filter
5)show
DataFrame和RDD互操作的两种方式
1)反射:case class 前提:实现需要知道你的字段、字段类型
2)编程:Row 如果第一种情况不能
优先考虑第一种