dataset的去重计数 g2_Spark之RDD、Dataset和DataFrame

本文介绍了Spark中的Dataset操作,包括Encoder的作用、Dataset的Actions和转换操作。重点讲解了去重方法如distinct()和dropDuplicates(),以及统计功能如summary()和describe(),并展示了如何进行数据集的连接、筛选和选择列。
摘要由CSDN通过智能技术生成

names = people.map((Person p) -> p.name, Encoders.STRING));

```

#### 二、Encoder

这里还介绍一个**Encoder**概念。Encoder是用来支持Dataset的领域对象的,我们知道,Dataset中的每一行可以当做一个Bean,这是需要`Encoder`来支撑的。它的作用是把领域对象`T`变成`Spark`内部的类型系统。例如,给定一个类`Person`,它包含两个字段一个是`name(string)`一个是年龄`age(int)`,那么一个encoder用来告诉Spark在运行时产生一些代码,将Person对象序列化成一个二进制的结构。在Scala中,Encoder会被自动计算,而Java中则要显示制定Encoder对象。如:

```

val people = spark.read.parquet("...").as[Person] // Scala

Datasetpeople = spark.read().parquet("...").as(Encoders.bean(Person.class)); // Java

```

Encoder是Spark SQL中序列化和反序列化最基本的概念。

Encoder特征:

```scala

trait Encoder[T] extends Serializable {

def schema: StructType

def clsT

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值