dataframe 基本操作
package com.jason.example
import org.apache.spark.sql.functions.broadcast
class DFTest extends SparkInstance {
import spark.implicits._
val df = Seq(
("jason", , "理想",),
(null, , "理想",),
("mac", , "理想",),
("mac", , "理想",)
).toDF("name", "depid", "company","groupid").repartition()
val df3 = Seq(
("jason", , "理想",),
("dong", , "理想",),
("mac", , "理想",)
).toDF("name", "depid", "company","groupid").repartition()
val df2 = Seq(
(,"周浦",),
(,"孙桥",),
(,"金桥",)
).toDF("depid","addr","gid").repartition()
def ff(): Unit = {
println(df.toString())//[name: string, depid: int ... 1 more field]
println(df.schema)
df.printSchema()
df.explain(true)//Prints the plans (logical and physical) to the console for debugging purposes.
println(df.dtypes.mkString(","))//(name,StringType),(depid,IntegerType),(company,StringType)
println(df.columns.mkString(","))//
//df.withWatermark() ???
df.show(,false)
df.na.drop("any"/*"all"*/).show(false) //删除df中包含null 或NaN 的记录,如果为any 则只要有有一列为
//null 或NaN 则删除整行,如果是all 则所有列是null ho NaN 时才删除整行
df.na.fill("xxx",Seq("name")).show()//缺失值填充,把null 或 NaN 替换为所需要的值
df.na.replace("name",Map("jason"->"abc","dong"->"def")).show()//将字段name 中 的值按照map 内容进行更改
//df.stat.xxx ???
df.join(df2,(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"right").show()
df.join(df2,(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()
df.join(df2,(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()
println("="*)
df.join(df2.hint("broadcast"),(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()
df.join(broadcast(df2),(df("depid")===df2("depid")).and(df("groupid")===df2("gid")),"left").show()//spark 默认广播10MB的小表
//df2.hint("broadcast") 和 broadcast(df2) 是等同的
df.crossJoin(df2).show()//笛卡尔积
df.sort($"name".desc,$"depid".asc).show()
df.select("name","depid").show()
df.selectExpr("name as nm","depid as id").show()
df.filter(s"""name='jason'""").show()
df.where(s"""name='jason'""").select("name","depid").show
df.rollup("name","depid").count().show()
df.cube("name","depid").count().show()
df.groupBy("name","depid").count().show()
df.agg("name"->"max","depid"->"avg").show()
df.groupBy("name","depid").agg("name"->"max","depid"->"avg").show()
df.limit().show()
df.union(df3).show()
df.unionByName(df3).show()
df.intersect(df3).show()//交集
df.except(df3).show() //差集
df.sample(0.5).show()
df.randomSplit(Array(0.4,0.6)).apply().show()
df.withColumn("depid",$"depid".<=()).show() // 该方法可以替换或增加一列到原df, 第二个参数中的col必须时df中的元素
df.withColumnRenamed("name","姓名").show()
df.drop("name","depid")//舍弃某几列
df.distinct()
df.dropDuplicates("name").show() //根据某几列去重,会保留最后一条数据
df.describe().show() //count,mean,min,max
df.summary().show()//count,min,25%,50%,max
df.head() //所有的数据会被collect到driver
df.toLocalIterator()
spark.stop()
}
}
object DFTest {
def main(args: Array[String]): Unit = {
val dt = new DFTest
dt.ff()
}
}
dataframe 基本操作的更多相关文章
- DataFrame基本操作
这些操作在网上都可以百度得到,为了便于记忆自己再根据理解总结在一起.---------励志做一个优雅的网上搬运工 1.建立dataframe (1)Dict to Dataframe df = pd. ...
- python做数据分析pandas库介绍之DataFrame基本操作
怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...
- 用python做数据分析pandas库介绍之DataFrame基本操作
怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...
- pandas库介绍之DataFrame基本操作
怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 今天是5.1号. 这一部分主要学习pandas中基于前面两种数据结构的基本操作 ...
- 用python做数据分析4|pandas库介绍之DataFrame基本操作
原文地址 怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 今天是5.1号. 这一部分主要学习pandas中基于前面两种数据结构 ...
- 机器学习三剑客之Pandas中DataFrame基本操作
Pandas 是基于Numpy 的一种工具,是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷 ...
- pd库dataframe基本操作
一.查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不 ...
- pyspark SparkSession及dataframe基本操作
from pyspark import SparkContext, SparkConf import os from pyspark.sql.session import SparkSession f ...
- python数据类型之pandas—DataFrame
DataFrame定义: DataFrame是pandas的两个主要数据结构之一,另一个是Series —一个表格型的数据结构 —含有一组有序的列 —大致可看成共享同一个index的Series集合 ...
随机推荐
- jetty9部署
https://blog.51cto.com/5404542/1751702 Jetty 9部署web应用 Jetty相关的文章比较少,不过官方文档挺齐全的.做下记录也是好事. jetty9跟 ...
- .Net MVC 提示未能加载文件或程序集
最近在开发.Net MVC程序时,突然出现未能加载文件或程序集的错误, 错误1 错误2 猜测时由于引用了Swagger,导致Swagger依赖的组件版本和现有版本冲突(现在仍未确定是这个原因),浪费了 ...
- java.lang.NoSuchMethodError的通用解决思路
NoSuchMethodError中文意思是没有找到方法,遇到这个错误并不是说依赖的jar包.方法不存在而找不到,这就类似于 ClassNotFoundException错误了,出现ClassNotF ...
- 扫描不同域下的AD账户进行删除
public ResultModel GetEntryOneToDel(string sAMAccountName) { bool del=false; ResultModel result = ne ...
- 一次压测中tomcat生成session释放不及时导致的频繁fullgc性能优化案例
性能问题:老年代一直处于占满状态,为什么没有发生内存溢出 以HotSpot VM的分代式GC为例,普通对象分配都是在young gen进行的,具体是从在位于young gen中的eden space中 ...
- CTF必备技能丨Linux Pwn入门教程——利用漏洞获取libc
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- 以一道ctf学习python脚本
今天做了省赛初赛的ctf比赛,过程真是忐忑,奋战了6个小时(本来是三个小时的,哈哈哈哈). 不说了! 不说了! 说多了都是泪~ 看题吧,题目就是一道流量分析题,里面有一段icmp包,icmp包的ttl ...
- maven 学习---Maven Web应用
本教程将教你如何管理使用Maven版本控制系统管理一个基于Web项目.在这里,将学习如何创建/构建/部署和运行Web应用程序: 创建Web应用程序 要创建一个简单的java web应用程序,我们将使用 ...
- Linux环境oracle导库步骤
1.xshell登录linux 2.切换oracle用户 su - oracle 3.创建directory仓库目录,存放数据库dmp文件 //DIRFILE_zy 表示目录名称 后面的是实际地址 c ...
- js中console在一行内打印字符串和对象
在前端开发中,大多数的调试一般都是F12中的console和network中查看请求数据和响应数据,也有一部分人喜欢用debugger. 在开发大一些的项目时,在开发环境下,打开着控制台,切换一下页面 ...