DataFrame 看上去很像矩阵,且支持类似矩阵的操作;同时又很像关系表。

但是和关系系统相比, dataframe 有几个特性
- 保证顺序
- 行列对称
- 丰富的API: 可以进行类似关系型数据库的基本操作(类似My SQL的join, filter, 等), 也有类似线性代数的基本操作, 比如(transpose, dot 等) 同时还有类似电子表格(excel 的 透视表 pivot 等操作)
- 列中允许异构数据: 比如,一个 int 列中允许有 string 类型数据存在,它可能是脏数据。这点看出 DataFrame 非常灵活。
注意: 最近几年, dataframe的系统如雨后春笋不断出现, 但是dataframe的含义越来越模糊,因为 有些dataframe并不包含以上的全部特性. Spark DataFrame 只包含了关系表的语义,schema 需要确定,数据也并不保证顺序。 所以大家在使用不同的dataframe时候, 需要特别注意
网友评论