对于DataFrame结构的理解

对于df结构的理解

1、DataFrame = Dataset[Row]
   DataFrame 在Spark1.6之后就没有单独保存此类,其实是装有Row对象的Dataset
   Dataset的创建一般会将 Row 封装为一个案例类
   而虽然移除了DataFrame这个类,但是还是依旧保存这个方法,是因为它的创建方式灵活,
   增加或者删除某个字段时操作方便,而Dataset需要增删某一个字段时,则需要根据需求
   创建新的Row对象,程序性能较差
2、Row
   Row是一个特质,DF 需要存储数据时,需要使用Row的实现类
3、创建DF使用Row的 GenericRow,只保存了表中每一行的值,没有保存表结构信息
4、使用Row的 GenericRowWithSchema
   class GenericRowWithSchema(
   values : Array[Any], // 保存每行表中的值
   override val schema : StructType // 保存表的字段名和属性
   ) extends GenericRow(values)
 5、StructType
   是以一个里面装着StructField对象的数组
   case class StructType(
       field:Array[StructField]
   )
6、StructField
 case class StructField(
    name: String, // 字段名称
    dataType: DataType, // 字段类型
    nullable: Boolean = true, // 字段是否可以为空
    metadata: Metadata = Metadata.empty// 字段的附加信息 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值