DataFrame的基本操作函数_小疯子是我女神的博客-程序员秘密

技术标签: spark scala dataframe  

**

DataFrame的基本操作函数

**

- 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 类型

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

集成查询:

1、 agg(expers:column*) 返回dataframe类型 ,同数学计算求值
df.agg(max(“age”), avg(“salary”))
df.groupBy().agg(max(“age”), avg(“salary”))
2、 agg(exprs: Map[String, String]) 返回dataframe类型 ,同数学计算求值 map类型的
df.agg(Map(“age” -> “max”, “salary” -> “avg”))
df.groupBy().agg(Map(“age” -> “max”, “salary” -> “avg”))
3、 agg(aggExpr: (String, String), aggExprs: (String, String)) 返回dataframe类型 ,同数学计算求值
df.agg(Map(“age” -> “max”, “salary” -> “avg”))
df.groupBy().agg(Map(“age” -> “max”, “salary” -> “avg”))
4、 apply(colName: String) 返回column类型,捕获输入进去列的对象
5、 as(alias: String) 返回一个新的dataframe类型,就是原来的一个别名
6、 col(colName: String) 返回column类型,捕获输入进去列的对象
7、 cube(col1: String, cols: String
) 返回一个GroupedData类型,根据某些字段来汇总
8、 distinct 去重 返回一个dataframe类型
9、 drop(col: Column) 删除某列 返回dataframe类型
10、 dropDuplicates(colNames: Array[String]) 删除相同的列 返回一个dataframe
11、 except(other: DataFrame) 返回一个dataframe,返回在当前集合存在的在其他集合不存在的
12、 explode[A, B](inputColumn: String, outputColumn: String)(f: (A) ⇒ TraversableOnce[B])(implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[B]) 返回值是dataframe类型,这个 将一个字段进行更多行的拆分
df.explode(“name”,“names”) {name :String=> name.split(" ")}.show();
将name字段根据空格来拆分,拆分的字段放在names里面
13、 filter(conditionExpr: String): 刷选部分数据,返回dataframe类型 df.filter(“age>10”).show(); df.filter(df(“age”)>10).show(); df.where(df(“age”)>10).show(); 都可以
14、 groupBy(col1: String, cols: String*) 根据某写字段来汇总返回groupedate类型 df.groupBy(“age”).agg(Map(“age” ->“count”)).show();df.groupBy(“age”).avg().show();都可以
15、 intersect(other: DataFrame) 返回一个dataframe,在2个dataframe都存在的元素
16、 join(right: DataFrame, joinExprs: Column, joinType: String)
一个是关联的dataframe,第二个关联的条件,第三个关联的类型:inner, outer, left_outer, right_outer, leftsemi
df.join(ds,df(“name”)===ds(“name”) and df(“age”)===ds(“age”),“outer”).show();
17、 limit(n: Int) 返回dataframe类型 去n 条数据出来
18、 na: DataFrameNaFunctions ,可以调用dataframenafunctions的功能区做过滤 df.na.drop().show(); 删除为空的行
19、 orderBy(sortExprs: Column*) 做alise排序
20、 select(cols:string*) dataframe 做字段的刷选 df.select($“colA”, $“colB” + 1)
21、 selectExpr(exprs: String*) 做字段的刷选 df.selectExpr(“name”,“name as names”,“upper(name)”,“age+1”).show();
22、 sort(sortExprs: Column*) 排序 df.sort(df(“age”).desc).show(); 默认是asc
23、 unionAll(other:Dataframe) 合并 df.unionAll(ds).show();
24、 withColumnRenamed(existingName: String, newName: String) 修改列表 df.withColumnRenamed(“name”,“names”).show();
25、 withColumn(colName: String, col: Column) 增加一列 df.withColumn(“aa”,df(“name”)).show();

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44445958/article/details/88654931

智能推荐

linux中在vi编辑器中执行存盘退出命令是?_命令是在vi编辑器中执行存盘退出._魏波.的博客-程序员秘密

linux中在vi编辑器中执行存盘退出命令是?方法一:首先需要按ESC键回到命令模式,然后按:wq。方法二:按住shift再按两下’z‘键。

Globelmposter_Orcinus p的博客-程序员秘密

GlobeImposter病毒分析0x00 基础信息病毒背景:这个勒索病毒关键在于加密文件运行环境:win10一个勒索病毒 去微步下个样本回来0x01 简单分析1.DIE查壳 无壳大部分都是 创建文件 注册表相关的操作3.简单运行:发现后缀名.Snake4444HOW_TO_BACK_FILES.txtE9…文件:根据提示消息 发现 E9.。。。。。文件的 后部分内容就是personal id0x02 进一步分析start函数—> 跟进函数 sub

尝试编译android-4.0.4_r2.1_niyufeng的博客-程序员秘密

这几天第一次尝试编译andorid,顺利编译了android-4.0.4_r2.1和android-2.3.7_r1,这两个分别是4.0和2.3的最后版本。也尝试编译最新的android-4.1.1_r6,但是没成功,好像android-4.1要求要在64位的系统上编译,而我的32位系统上编译没多长时间就出错了。CPU:Intel Pentium(R) Dual CPU E2180

std::string的substr越界问题_任逍遥2011的博客-程序员秘密

今天程序中出现程序奔溃,具体如下。调试发现std::string中的substr(nbeg,nlen);参数nbeg大于string总长度,所以导致中断。所以在substr调用前,增加nbeg与总长度的判断。参考资料: 1. http://blog.sina.com.cn/s/blog_700a65cc0100mib6.htmlC++ strin

[Python] ConnectionResetError: [Errno 104] Connection reset by peer_errno 104 git_cindysz110的博客-程序员秘密

python socket 编程,sftp远程读日志文件,取最后的30行返回。收到ConnectionResetError: [Errno 104] Connection reset by peer报错。最后找到原因是send的数据size太大.Traceback (most recent call last):  File "s1.py", line 63, in

C3D:视频动作分类demo实现_AUTO1993的博客-程序员秘密

C3D:视频动作分类demo实现C3D这个网络是来自于learning Spatiotemporal feature with 3DConvolutional Networks这篇文章,我也对这篇文章仔细的研读过,总的来说这篇文章提出的网络的卷积神经网络(CNN)近年被广泛应用于计算机视觉中,包括分类、检测、分割等任务。这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维

随便推点

验证码_菜鸟教程*…*的博客-程序员秘密

常见验证码的弱点与验证码识别(转)  简介验证码作为一种辅助安全手段在Web安全中有着特殊的地位,验证码安全和web应用中的众多漏洞相比似乎微不足道,但是千里之堤毁于蚁穴,有些时候如果能绕过验证码,则可以把手动变为自动,对于Web安全检测有很大的帮助。全自动区分计算机和人类的图灵测试(英语:Completely Automated Public Turing test to tel

bootstrap-table 自定义右上角的按钮和功能(亲测)_jaymou的博客-程序员秘密

后端程序猿,前端菜的一批!搜过很多自定义bootstraptable bootstrap table按钮的,但是都是左边的,右边的没有遇到。一、需求最近在看各种web后端的开源项目,尤其是gvp项目项目来源【若依他爸大神的RuoYi-fast】:https://gitee.com/moujie/RuoYi-fast这个后端页面使用bootstraptable,页面中有一个自定...

python使用cer证书进行https访问接口_python post 请求带cer_独孤飞磊的博客-程序员秘密

1、将cer证书转换成pem格式拥有的证书文件:td.cer执行:openssl x509 -in td.crt -out td.pem -outform PE会输出文件td.pem2、https请求时添加verify认证完整请求如下:# -*- coding:utf-8 -*-import pymysqlimport sysimport requestsimport sysimport timeimport jsonreload(sys)sys.setdefaultenco

windows 安装metis_如何在windows上安装python中的METIS包?_hzzonline的博客-程序员秘密

这个问题是老问题,但我也遇到了同样的问题,在为。。太久了。。。我有一个对我有用的答案。在首先,应该使用pip:pip install metis获得python metis包装器。在其次,您必须安装conda metis,您可以找到here。尽管pip调用metis python包装器metis,但它只是metis包装器,没有metis本身。在将文件放在conda metis master中的某个...

Perceptual Losses for Real-Time Style Transfer and Super-Resolution_NoTime4Emotion的博客-程序员秘密

Perceptual Losses for Real-Time Style Transfer and Super-ResolutionPaper:https://arxiv.org/pdf/1603.08155.pdfCode:https://github.com/ChengBinJin/Real-time-style-transferSupplement:https://cs.stanfo...

推荐文章

热门文章

相关标签