1. package com.jason.example
  2.  
  3. import org.apache.spark.sql.functions.broadcast
  4.  
  5. class DFTest extends SparkInstance {
  6.  
  7. import spark.implicits._
  8.  
  9. val df = Seq(
  10. ("jason", , "理想",),
  11. (null, , "理想",),
  12. ("mac", , "理想",),
  13. ("mac", , "理想",)
  14. ).toDF("name", "depid", "company","groupid").repartition()
  15. val df3 = Seq(
  16. ("jason", , "理想",),
  17. ("dong", , "理想",),
  18. ("mac", , "理想",)
  19. ).toDF("name", "depid", "company","groupid").repartition()
  20. val df2 = Seq(
  21. (,"周浦",),
  22. (,"孙桥",),
  23. (,"金桥",)
  24. ).toDF("depid","addr","gid").repartition()
  25. def ff(): Unit = {
  26. println(df.toString())//[name: string, depid: int ... 1 more field]
  27. println(df.schema)
  28. df.printSchema()
  29. df.explain(true)//Prints the plans (logical and physical) to the console for debugging purposes.
  30. println(df.dtypes.mkString(","))//(name,StringType),(depid,IntegerType),(company,StringType)
  31. println(df.columns.mkString(","))//
  32. //df.withWatermark() ???
  33. df.show(,false)
  34. df.na.drop("any"/*"all"*/).show(false) //删除df中包含null 或NaN 的记录,如果为any 则只要有有一列为
  35. //null 或NaN 则删除整行,如果是all 则所有列是null ho NaN 时才删除整行
  36. df.na.fill("xxx",Seq("name")).show()//缺失值填充,把null 或 NaN 替换为所需要的值
  37. df.na.replace("name",Map("jason"->"abc","dong"->"def")).show()//将字段name 中 的值按照map 内容进行更改
  38. //df.stat.xxx ???
  39. df.join(df2,(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"right").show()
  40. df.join(df2,(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()
  41.  
  42. df.join(df2,(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()
  43. println("="*)
  44. df.join(df2.hint("broadcast"),(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()
  45. df.join(broadcast(df2),(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()//spark 默认广播10MB的小表
  46. //df2.hint("broadcast") 和 broadcast(df2) 是等同的
  47. df.crossJoin(df2).show()//笛卡尔积
  48. df.sort($"name".desc,$"depid".asc).show()
  49. df.select("name","depid").show()
  50. df.selectExpr("name as nm","depid as id").show()
  51. df.filter(s"""name='jason'""").show()
  52. df.where(s"""name='jason'""").select("name","depid").show
  53. df.rollup("name","depid").count().show()
  54. df.cube("name","depid").count().show()
  55. df.groupBy("name","depid").count().show()
  56. df.agg("name"->"max","depid"->"avg").show()
  57. df.groupBy("name","depid").agg("name"->"max","depid"->"avg").show()
  58. df.limit().show()
  59. df.union(df3).show()
  60. df.unionByName(df3).show()
  61. df.intersect(df3).show()//交集
  62. df.except(df3).show() //差集
  63. df.sample(0.5).show()
  64. df.randomSplit(Array(0.4,0.6)).apply().show()
  65. df.withColumn("depid",$"depid".<=()).show() // 该方法可以替换或增加一列到原df, 第二个参数中的col必须时df中的元素
  66. df.withColumnRenamed("name","姓名").show()
  67. df.drop("name","depid")//舍弃某几列
  68. df.distinct()
  69. df.dropDuplicates("name").show() //根据某几列去重,会保留最后一条数据
  70. df.describe().show() //count,mean,min,max
  71. df.summary().show()//count,min,25%,50%,max
  72. df.head() //所有的数据会被collect到driver
  73. df.toLocalIterator()
  74.  
  75. spark.stop()
  76. }
  77. }
  78.  
  79. object DFTest {
  80. def main(args: Array[String]): Unit = {
  81. val dt = new DFTest
  82. dt.ff()
  83. }
  84. }

dataframe 基本操作的更多相关文章

  1. DataFrame基本操作

    这些操作在网上都可以百度得到,为了便于记忆自己再根据理解总结在一起.---------励志做一个优雅的网上搬运工 1.建立dataframe (1)Dict to Dataframe df = pd. ...

  2. python做数据分析pandas库介绍之DataFrame基本操作

    怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...

  3. 用python做数据分析pandas库介绍之DataFrame基本操作

    怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...

  4. pandas库介绍之DataFrame基本操作

    怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 今天是5.1号. 这一部分主要学习pandas中基于前面两种数据结构的基本操作 ...

  5. 用python做数据分析4|pandas库介绍之DataFrame基本操作

    原文地址 怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 今天是5.1号. 这一部分主要学习pandas中基于前面两种数据结构 ...

  6. 机器学习三剑客之Pandas中DataFrame基本操作

    Pandas 是基于Numpy 的一种工具,是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷 ...

  7. pd库dataframe基本操作

    一.查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不 ...

  8. pyspark SparkSession及dataframe基本操作

    from pyspark import SparkContext, SparkConf import os from pyspark.sql.session import SparkSession f ...

  9. python数据类型之pandas—DataFrame

    DataFrame定义: DataFrame是pandas的两个主要数据结构之一,另一个是Series —一个表格型的数据结构 —含有一组有序的列 —大致可看成共享同一个index的Series集合 ...

随机推荐

  1. background 设置文本框背景图

    background 属性的作用是给元素设置背景,它是一个复合属性,常用的子属性如下: background-color 指定元素的背景颜色. background-image 指定元素的背景图像. ...

  2. Python - 获取本机IP地址、Mac地址

    Python - 获取本机IP地址.Mac地址 在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 直接看代码: # Python - 获取本机I ...

  3. Java学习——枚举类

    Java学习——枚举类 摘要:本文主要介绍了Java的枚举类. 部分内容来自以下博客: https://www.cnblogs.com/sister/p/4700702.html https://bl ...

  4. 图书推荐《图解HTTP》

    作品简介 本书对互联网基盘——HTTP协议进行了全面系统的介绍.作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全.最新技术 ...

  5. colmap编译过程中出现,无法解析的外部符号错误 “__cdecl google::base::CheckOpMessageBuilder::ForVar1(void)”

    错误提示: >colmap.lib(matching.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: cl ...

  6. vue学习指南:第十篇(详细) - Vue的 动画

    Vue 提供了一些不同的过度效果,主要根 v-if v-show 动态组件 1. Vue给动画分了6个过程,在css中,扮演6个类, 1.  .v-enter定义动画的开始状态 2.  .v-ente ...

  7. 章节十四、3-执行JavaScript命令

    一.网页页面都是由html+css和javaScript组成的,如果页面中没有javaScript的存在,就不会有操作动作的执行,例如页面上你点击的按钮或者链接都离不开javaScript.(这一节不 ...

  8. Properties类按顺序输出加载内容

    Properties类按顺序输出加载内容 最近手写工厂的时候,遇到了加载配置文件时不按照properties文件中的数据的顺序来加载. 一.问题代码 import java.io.IOExceptio ...

  9. linux 重启 网络服务

    设置网路ip等后 需要重启网路服务 debian: /etc/iinit.d/networking  restart centos7: service network restart or syste ...

  10. Linux framebuffer deferred io机制【转】

    转自:https://www.cnblogs.com/vedic/p/10722514.html 一.总体框架 deferred io机制主要用于驱动没有实现自刷新同时应用层又不想调用FBIOPAN_ ...