SparkSQL的Shuffle分区设定及异常数据处理API(去重、缺失值处理)

                  一、Spark SQL的Shuffle分区数目设定

二、异常数据处理API

        (1)去重方法dropDuplicates

        (2)删除有缺失值的行方法dropna

        (3)填充缺失值数据fillna


一、Spark SQL的Shuffle分区数目设定

        在允许spark程序时,查看WEB UI监控页面发现,某个Stage中有200个Task任务,也就是说RDD有200分区Partion。

        产生原因:

        在Spark SQL中,当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partions)为200,在实际项目中要合理的设置。local模式建议适当降低,集群模式下应动态调整。

        配置修改:

二、异常数据处理API

        (1)去重方法dropDuplicates

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

# cording:utf8from pyspark.sql import SparkSession
from pyspark.sql import functions as Fif __name__ == '__main__':spark = SparkSession.builder.\appName('wordcount').\master('local[*]').\getOrCreate()sc = spark.sparkContext'''读取数据'''df = spark.read.format('csv').\option('sep', ';').\option('header', True).\load('../input/people.csv')# 数据清洗:数据去重# dropDuplicates 是DataFrame的API,可以完成数据去重# 无参数使用,对全部的列 联合起来进行比较,去除重复项,只保留一条df.dropDuplicates().show()df.dropDuplicates(['age', 'job']).show()

        无参数:

        有参数:

        (2)删除有缺失值的行方法dropna

        功能:如果数据中包含null通过dropna来进行判断,符合条件就删除这一行数据

# cording:utf8from pyspark.sql import SparkSession
from pyspark.sql import functions as Fif __name__ == '__main__':spark = SparkSession.builder.\appName('wordcount').\master('local[*]').\getOrCreate()sc = spark.sparkContext'''读取数据'''df = spark.read.format('csv').\option('sep', ';').\option('header', True).\load('../input/people.csv')# 数据清洗:缺失值处理# dropna API是可以对缺失值的数据进行删除# 无参数使用,只要列中有Null 就删除这一行数据df.dropna().show()# thresh = 3 表示,最少满足三个有效列,不满足 就删除当前行数据df.dropna(thresh=3).show()df.dropna(thresh=2, subset=['name', 'age']).show()

        指定thresh参数:

        指定subset:

        (3)填充缺失值数据fillna

        功能:根据参数的规则,来进行null的替换

# cording:utf8from pyspark.sql import SparkSession
from pyspark.sql import functions as Fif __name__ == '__main__':spark = SparkSession.builder.\appName('wordcount').\master('local[*]').\getOrCreate()sc = spark.sparkContext'''读取数据'''df = spark.read.format('csv').\option('sep', ';').\option('header', True).\load('../input/people.csv')# 对缺失值进行填充# DataFrame的fillna对缺失值的列进行填充df.fillna('loss').show()# 对指定的列进行填充df.fillna('N/A', subset=['job']).show()# 设定一个字典,对所有的列进行填充缺失值df.fillna({'name':'未知姓名', 'age':1, 'job':'worker'}).show()

        全局填充:

        指定列填充:        

        通过字典填充:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德语中第二虚拟式在主动态的形式,柯桥哪里可以学德语

德语中第二虚拟式在主动态的形式 1. 对于大多数的动词,一般使用这样的一般现在时时态: wrde 动词原形 例句:Wenn es nicht so viel kosten wrde, wrde ich mir ein Haus am Meer kaufen. 如果不花这么多钱,我会在海边买一栋房…

8. Cesium中的camera

1. 介绍 camera是viewer.scene中的属性,用来控制当前的可见域。viewer.camera 是快捷写法,访问的是 viewer.scene.camera,所以调用时这两种写法都行。介绍常用的view.carmera方法。 (1). setView Camera根据视图位置…

React 在非组件环境切换路由

我的react-router-dom版本是6.16.0。之前在react中是这样配置路由的 App.jsx import ReactDOM from react-dom/client; import { HashRouter, Route, Routes } from react-router-dom;const root ReactDOM.createRoot(document.getElementById("app")); root.rend…

Python实验项目4 :面对对象程序设计

1:运行下面的程序,回答问题。 (1)说明程序的执行过程; (2)程序运行结果是什么? # (1)说明程序的执行过程; # (2)程序运行…

android开发使用OkHttp自带的WebSocket实现IM功能

一、背景 android app开发经常会有IM需求,很多新手不晓得如何入手,难点在于通讯不中断。其实android发展到今天,很多技术都很完善,有很多类似框架可以实现。例如有:okhttp自带的websocket框架、easysocket等等。本文主…

vite工具官方地址 +前端工具插件

该项目与 Vite 一起提供服务和捆绑。推荐的 IDE 设置是 ** VSCode Volar。 **如果您需要测试组件和网页,请查看赛普拉斯和赛普拉斯组件测试。 有关更多说明,请参见。README.md vite官方地址

如何做一个无符号数识别程序

1.状态分析 我们可以把无符号数分为:整数,带小数,带指数部分三种形式。以此构建一个DFA。首先需识别输入是整数还是小数点,若是整数部分输入然后还要再循环识别一次是否有小数点,最后识别是否有指数部分,指…

Spring学习笔记—JDK动态代理

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Spring专栏 ✨特色专栏: M…

Redis -- 基础知识2

1.Redis客户端介绍 1.基础介绍 Redis是一种客户端-服务器结构的程序,通过网络进行互动 客户端的多种形态 1.自带了命令行客户端:redis-cil 2.图形化界面的客户端:依赖windows系统,连接服务器有诸多限制,不建议使用 3.基…

Redis -- 基础知识1

1.介绍 1.初识Redis Redis:The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. in-memory data:在内存中存储,Redis是在分布式系统中存储起作用的 解释&am…

打印机连接网络后怎么安装驱动?

打印机在我们办公和生活中算是比较常见的设备,特别是在上班时需要时常打印各种文件,但是有时电脑上的打印机也会有无法打印的问题,或者新买的打印机需要先安装驱动才能正常打印的。 那么这个时候我们需要先检查电脑上的打印机是否有安装驱动&…

主线程和子线程的区别

在多线程编程中,我们通常会涉及到主线程(也称为父线程)和子线程(也称为工作线程)。 1. 主线程:主线程是程序的起点,它负责创建和管理其他线程。主线程通常执行程序的初始化操作,包括…

Kotlin中的嵌套类、内部类、枚举类、密封类、数据类、单例类、伴生对象

在Kotlin中,类可以分为以下几种类型,并使用样例代码进行说明: 嵌套类(Nested Class):嵌套类是指可以嵌套在其他类中的类。嵌套类不能直接访问外部类的成员。例如,在下面的代码中,&q…

正点原子嵌入式linux驱动开发——异步通知

上一篇笔记中使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过poll函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序再从驱动程序中…

LCR 146. 螺旋遍历二维数组

LCR 146. 螺旋遍历二维数组 原题链接:完成情况:解题思路:参考代码: 原题链接: LCR 146. 螺旋遍历二维数组 https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/description/ 完成情况: 解…

【Leetcode】【每日一题】【简单】2520. 统计能整除数字的位数

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/count-the-digits-that-divide-a…

LeetCode 面试题 16.03. 交点

文章目录 一、题目二、C# 题解 一、题目 给定两条线段(表示为起点 start {X1, Y1} 和终点 end {X2, Y2}),如果它们有交点,请计算其交点,没有交点则返回空值。 要求浮点型误差不超过 10^-6。若有多个交点(…

网络安全保险行业面临的挑战与变革

保险业内大多数资产类别的数据可以追溯到几个世纪以前;然而,网络安全保险业仍处于初级阶段。由于勒索软件攻击、高度复杂的黑客和昂贵的数据泄漏事件不断增加,许多网络安全保险提供商开始感到害怕继续承保更多业务。 保险行业 根据最近的路…

【方法】如何给PDF文件添加“打开密码”?

PDF文件可以在线浏览,但如果想要给文件添加“打开密码”,就需要用到软件工具,下面小编分享两种常用的工具,小伙伴们可以根据需要选择。 工具一:PDF编辑器 PDF阅读器一般是没有设置密码的功能模块,PDF编辑器…

python自动化测试(二):xpath获取元素

目录 前置代码 一、什么是xpath方式 二、通过xpath 单组属性名属性值 的方式进行元素定位 三、通过xpath的多组属性进行元素的定位 四、通过xpath文本值的方式进行元素定位 五、通过模糊的文本值方式进行元素定位 前置代码 # codingutf-8 from selenium import webdrive…