spark对DataFrame操作的方法(包含去除重复)

DataFrame 的函数

检查重复:df…distinct()

    var dataxx = Seq(
      ("89", "ming", "hlj","men","2019-09-08 19:19:19"),
      ("2", "kun", "xj","women","2019-09-07 10:13:15"),
      ("105", "kun", "xz","women","2019-09-02 20:20:20"),
      ("1000", "pig", "mc","women","2019-09-05 09:09:11"),
      ("1012", "pig", "hk","women","2019-09-04 10:11:11"),
      ("12", "long", "jx","men","2019-09-08 00:11:11"),
      ("110", "long", "fj","men","2019-09-07 01:01:01"),
      ("30", "sun", "ln","men","2019-09-08 11:11:11"),
      ("1", "sun", "jl","men","2019-09-06 13:11:11"),
      ("200", "tian", "jl","women","2019-09-07 02:02:02"),
      ("4", "tian", "bj","women","2019-09-08 12:12:12"),
      ("4", "tian", "bj","women","2019-09-08 12:12:12"),
      ("50", "tian", "bj","women","2019-09-07 13:13:13")
    ).toDF("useid", "name", "live","gender","createtime")
    dataxx.show()
    dataxx.count()
    dataxx.distinct().count()

结果:

dataxx: org.apache.spark.sql.DataFrame = [useid: string, name: string ... 3 more fields]
+-----+----+----+------+-------------------+
|useid|name|live|gender|         createtime|
+-----+----+----+------+-------------------+
|   89|ming| hlj|   men|2019-09-08 19:19:19|
|    2| kun|  xj| women|2019-09-07 10:13:15|
|  105| kun|  xz| women|2019-09-02 20:20:20|
| 1000| pig|  mc| women|2019-09-05 09:09:11|
| 1012| pig|  hk| women|2019-09-04 10:11:11|
|   12|long|  jx|   men|2019-09-08 00:11:11|
|  110|long|  fj|   men|2019-09-07 01:01:01|
|   30| sun|  ln|   men|2019-09-08 11:11:11|
|    1| sun|  jl|   men|2019-09-06 13:11:11|
|  200|tian|  jl| women|2019-09-07 02:02:02|
|    4|tian|  bj| women|2019-09-08 12:12:12|
|    4|tian|  bj| women|2019-09-08 12:12:12|
|   50|tian|  bj| women|2019-09-07 13:13:13|
+-----+----+----+------+-------------------+

res113: Long = 13
res114: Long = 12

去除重复:df.dropDuplicates()

//移除重复的数据
df = df.dropDuplicates()
//查看去重后的数据
df.show()
Action 操作
1、 collect() ,返回值是一个数组,返回dataframe集合所有的行
2、 collectAsList() 返回值是一个Java类型的数组,返回dataframe集合所有的行
3、 count() 返回一个number类型的,返回dataframe集合的行数
4、 describe(cols: String*) 返回一个通过数学计算的类表值(count, mean, stddev, min, and max),这个可以传多个参数,中间用逗号分隔,如果有字段为空,那么不参与运算,只这对数值类型的字段。例如df.describe("age", "height").show()
5、 first() 返回第一行 ,类型是row类型
6、 head() 返回第一行 ,类型是row类型
7、 head(n:Int)返回n行  ,类型是row 类型
8、 show()返回dataframe集合的值 默认是20行,返回类型是unit
9、 show(n:Int)返回n行,,返回值类型是unit
10、table(n:Int) 返回n行  ,类型是row 类型
11 、limit(n:Int) 返回一个DataFrame类型值  提取DataFrame的前n行

Dataframe的基本操作

1、 cache()同步数据的内存
2、 columns 返回一个string类型的数组,返回值是所有列的名字
3、 dtypes返回一个string类型的二维数组,返回值是所有列的名字以及类型
4、 explan()打印执行计划  物理的
5、 explain(n:Boolean) 输入值为 false 或者true ,返回值是unit  默认是false ,如果输入true 将会打印 逻辑的和物理的
6、 isLocal 返回值是Boolean类型,如果允许模式是local返回true 否则返回false
7、 persist(newlevel:StorageLevel) 返回一个dataframe.this.type 输入存储模型类型
8、 printSchema() 打印出字段名称和类型 按照树状结构来打印
9、 registerTempTable(tablename:String) 返回Unit ,将df的对象只放在一张表里面,这个表随着对象的删除而删除了
10、 schema 返回structType 类型,将字段名称和类型按照结构体类型返回
11、 toDF()返回一个新的dataframe类型的
12、 toDF(colnames:String*)将参数中的几个字段返回一个新的dataframe类型的,
13、 unpersist() 返回dataframe.this.type 类型,去除模式中的数据
14、 unpersist(blocking:Boolean)返回dataframe.this.type类型 true 和unpersist是一样的作用false 是去除RDD

转载自博客:https://blog.csdn.net/sysmedia/article/details/70049017

你可能感兴趣的:(Spark,DateFrame)