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

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Spark电影推荐项目的代码说明书,包括代码结构、函数功能和输入输出等。 ## 代码结构 本项目的代码分为以下几个部分: 1. 数据准备:包括读取数据、清洗数据和处理数据等。 2. 特征工程:包括提取特征、处理特征和构建特征向量等。 3. 模型训练:包括使用ALS算法训练推荐模型、模型评估和模型优化等。 4. 推荐系统实现:包括为每个用户推荐电影、输出推荐结果和提供推荐理由等。 5. 主函数:包括整个项目的流程和调用各个部分的函数等。 ## 函数功能 ### 数据准备 1. read_data(filename):读取数据文件,返回Spark DataFrame对象。 - 输入:数据文件路径 - 输出:Spark DataFrame对象 2. clean_data(dataframe):清洗数据,去除缺失值和重复值,返回新的Spark DataFrame对象。 - 输入:原始Spark DataFrame对象 - 输出:新的Spark DataFrame对象 3. process_data(dataframe1, dataframe2):处理数据,合并两个Spark DataFrame对象,并进行一些必要的列名修改和转换,返回新的Spark DataFrame对象。 - 输入:两个Spark DataFrame对象 - 输出:新的Spark DataFrame对象 ### 特征工程 1. extract_features(dataframe):提取特征,从Spark DataFrame对象中提取有用的特征列,返回新的Spark DataFrame对象。 - 输入:原始Spark DataFrame对象 - 输出:新的Spark DataFrame对象 2. process_features(dataframe):处理特征,对特征进行一些必要的类型转换和列名修改,返回新的Spark DataFrame对象。 - 输入:原始Spark DataFrame对象 - 输出:新的Spark DataFrame对象 3. build_feature_vectors(dataframe):构建特征向量,将特征转换成向量形式,返回新的Spark DataFrame对象。 - 输入:原始Spark DataFrame对象 - 输出:新的Spark DataFrame对象 ### 模型训练 1. train_model(dataframe):使用ALS算法训练推荐模型,返回训练好的ALSModel对象。 - 输入:Spark DataFrame对象 - 输出:ALSModel对象 2. evaluate_model(model, dataframe):评估模型,计算RMSE指标并输出,无返回值。 - 输入:ALSModel对象和Spark DataFrame对象 3. optimize_model(dataframe):优化模型,使用交叉验证和参数网格搜索找到最佳的模型参数,并返回训练好的ALSModel对象。 - 输入:Spark DataFrame对象 - 输出:ALSModel对象 ### 推荐系统实现 1. recommend_movies(model, user_id, n):为指定用户推荐n部电影,返回推荐结果的Spark DataFrame对象。 - 输入:ALSModel对象、用户ID和推荐电影数量 - 输出:Spark DataFrame对象 2. output_recommendations(dataframe):输出推荐结果,将推荐结果Spark DataFrame对象转换成易读的格式并输出,无返回值。 - 输入:Spark DataFrame对象 3. provide_reasons(dataframe):提供推荐理由,为每个推荐电影输出相应的推荐理由,无返回值。 - 输入:Spark DataFrame对象 ### 主函数 1. main():整个项目的流程和调用各个部分的函数,无输入和返回值。 ## 输入输出 本项目的输入和输出如下: - 输入:数据文件路径、用户ID、推荐电影数量等。 - 输出:推荐结果Spark DataFrame对象、推荐结果输出、推荐理由输出等。 推荐结果Spark DataFrame对象包括用户ID、推荐电影ID、推荐电影评分和电影标题等信息。推荐结果输出和推荐理由输出将推荐结果和推荐理由转换成易读的格式,并输出到控制台或文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值