首页 > 其他分享 >1/29 学习进度笔记

1/29 学习进度笔记

时间:2024-01-29 16:34:05浏览次数:25  
标签:option show df format 29 笔记 DataFrame 进度 数据

SparkSQL数据清洗API

前面我们处理的数据实际上都是已经被处理好的规整数据,但是在大数据整个生产过程中,需要先对数据进行数据清洗,将杂乱无章的数据整理为符合后面处理要求的规整数据。

去重方法dropDuplicates

功能:对DF的数据进行去重,如果重复数据有多条,取第一条

缺失值处理dropna

fillna填充缺失值

if __name__ == '__main__':
spark = SparkSession.builder.appName("test").master("local[*]").getOrCreate()
sc = spark.sparkContext

df = spark.read.format("csv").option("header", "true").option("sep", ";").load("../data/sql/people.csv")

# 数据清洗:数据去重
# dropDuplicates是DataFrame 的API,可以完成数据去重
# 无参数使用,对全部的列联合起来进行比较,去除重复值,只保留一条
df.dropDuplicates().show()

df.dropDuplicates(['age', 'job']).show()

# 数据清洗:缺失值处理
# dropna api是可以对缺失值的数据进行删除
# 无参数使用,只要列中有null就删除这一行数据
df.dropna().show()
# thresh = 3表示,最少满足3个有效列,不满足就删除当前行数据
df.dropna(thresh=3).show()

# 对缺失值的处理,即缺失数据就填充
df.fillna("loss").show()

# 对指定列填充
df.fillna("N/A", subset=["job"]).show()

# 设定一个字典,对所有列进行充值填充
df.fillna({"name":"未知姓名","age":1, "job":"worker"}).show()

 

3.8 DataFrame数据写出

SparkSQL统一API写出DataFrame数据

统一—API语法:

1 df.write.mode( ) .format( ) .option(K,V).save(PATH)

2 # mode,传入模式字符串可选: append 追加,overwrite 覆盖,ignore忽略,error重复就报异常(默认的)

3# format,传入格式字符串,可选: text, csv,json,parquet, orc, avro, jdbc

4#注意text源只支持单列df写出

5# option设置属性,如:.option( "sep", " , " ) r

6# save 写出的路径,支持本地文件和HDFS

 

3.9 DataFrame通过JDBC读写数据库(MySQL示例)

 注意:

· jdbc连接字符串中,建议使用useSSL=false确保连接可以正常连接( 不使用SSL安全协议进行连接)

. jdbc连接字符串中,建议使用useUnicode=true来确保传输中不出现乱码

. save()不要填参数,没有路径,是写出数据库

· dbtable属性:指定写出的表名

df.write.mode("overwrite").\
format("jdbc").\
option("url", "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true").\
option("dbtable", "movies").\
option("user", "root").\
option("password", "1234").\
save()

df2 = spark.read.format("jdbc"). \
option("url", "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true"). \
option("dbtable", "movies"). \
option("user", "root"). \
option("password", "1234").\
load()

df2.printSchema()
df2.show()

 

总结:

1. DataFrame在结构层面上由StructField组成列描述,由StructType构造表描述。在数据层面上,Column对象记录列数据,Row对象记录行数据

2. DataFrame可以从RDD转换、Pandas DF转换、读取文件、读取JDBC等方法构建

3. spark.read.format()和df.write.format()是DataFrame读取和写出的统一化标准API

4. SparkSQL默认在Shuffle阶段200个分区,可以修改参数获得最好性能

5. dropDuplicates可以去重、dropna可以删除缺失值、fillna可以填充缺失值

6. SparkSQL支持JDBC读写,可用标准API对数据库进行读写操作

标签:option,show,df,format,29,笔记,DataFrame,进度,数据
From: https://www.cnblogs.com/yuncannotjava/p/17994814

相关文章

  • CSAPP学习笔记——chapter8 异常控制流
    CSAPP学习笔记——chapter8异常控制流简介异常控制流(ExceptionalControlFlow,ECF)是在计算机系统中处理不寻常或异常情况的一种机制。它允许系统跳出正常的顺序控制流,响应那些并不直接由程序的控制流逻辑触发的事件。ECF在硬件、操作系统和应用程序层面都有体现,并且是现代计算......
  • 023 数据库学习笔记--修改字段非空+默认值
    第一步:将字段为空的信息更改为默认值第二步:更改字段为非空第三步:设置默认值约束updateTableImageQualitysetImageScore=0whereImageScoreisnullALTERTABLETableImageQualityALTERCOLUMNImageScoreVARCHAR(10)notnullupdateTableImageQualitysetFilmS......
  • 二维凸包复习笔记
    Graham扫描法向量的叉乘:平行四边形面积,顺负逆正,x1y2-x2y11.确定1个凸包上的点:纵坐标最小(纵坐标相同时横坐标最小)的点2.极角排序3.单调栈维护凸包点击查看代码//二维凸包#include<bits/stdc++.h>usingnamespacestd;structt1{ doublex,y;}t[100005];ints[100......
  • 《人月神话》阅读笔记3
    未雨绸缪 软件系统开发需要一个实验性的工程,这个工程的丢弃和重建都是可以接受的,而系统结构发生变化也会导致开发团对结构的变化;软件发布后,随着时间推移,需要的维护工作会逐渐增加干将莫邪 软件开发需要通用的工程技术,否则会导致沟通效率的降低,需要考虑到机器、编程语言等部分......
  • 【学习笔记】二分图
    1.定义一个二分图满足有一种划分方案使得它节点的被分为两部分,且所有边的端点所在的部分不相同。即每条边都连接两个部分。变量说明:没有特殊说明时,\(n\)表示a部分点数,\(m\)表示b部分点数,\(e\)表示边数。2.判定显然我们给二分图染色,确定一个点所有点都确定。如果在染的......
  • AirNet使用笔记10(组播测试)
    1、修改MSDP2的主机名,IP改为不同网段,加路由测试SMC:/home/cdatc/AirNet/config/network.xml<nodehostname="msdp2"showname="msdp2"position="ACC"logic_position="ACC"stationno="4"bakenode="3"grouptype=&quo......
  • 算法模板 v1.4.2.20240129
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • Unity-GC优化相关笔记
    Unity官网GC定义如下创建对象、字符串或数组时,用于存储它的内存是从称为堆的中央池分配的。当此项不再使用时,其先前占用的内存可被回收并用于其他目的。在过去,通常由程序员通过适当的函数调用显式地分配和释放这些堆内存块。如今,Unity的Mono引擎等运行时系统会自动为您管理内......
  • TS学习笔记十二:项目配置
      本节介绍ts项目配置相关内容,包括项目配置文件tsconfig.json的说明及编译选项的内容介绍。B站视频https://www.bilibili.com/video/BV1ca4y1C7WB/西瓜视频https://www.ixigua.com/7327847796814709288一、tsconfig.json  tsconfig.json位于ts项目的根目录中,此文......
  • 【学习笔记】线段树
    1.线段树合并P4556雨天的尾巴首先我们可以把链上操作转成树上差分。然后我们对每个节点开一棵权值线段树。朴素的树上差分都是开一个桶然后加和,但是这里开的是线段树。所以就有了线段树合并。在把\(y\)并到\(x\)的过程中,如果\(x\)本身没有一个\(y\)有的节点就可以直......