Spark dataset常用操作优化思路

Dataset基本操作、Column对象、缺失值处理 DataSet(DataFrame)的基本操作 有类型操作 转换 flatMap 通过 flatMap 可以将一条数据转为一个数组, 后再展开这个数组放入 Dataset import spark.implicits._ val ds = Seq("hello world", "hello spark").toDS() ds.flatMap( _.split(" ") ).show() map ... 阅读详情

select字段格式转换优化

hive数据和tidb数据类型不匹配问题,需要转换,有三种方案

1.dataset.withcolumn方法重写一个列

缺点:重新生成一个列,涉及到整个dataset分布的重写,加剧消耗磁盘io,也有性能问题,这种方式适合复杂的列进行计算后生成一个新值,然后这个新值进行join其他dataset操作

2.dataset.select(Column.udf())

只会在真正写的时候才进行转换操作,所以这种最适合格式进行转换,select 后一定要as别名一下,要不然会出现udf(name) 这个key找不到问题,正确为udf(name) as name

3.dataset.map(() -> )

缺点:map可能有单点问题,即所有的excutor会集中到一台进行map转换,数据量大会出现瓶颈问题

大dataset拆分优化

spark本身的机制其实可以处理数据量巨大的dataset,一般仅仅select并不会触发结算,只有count或者take才会操作,但是当一个dataset往mysql写时,就需要控制速度了,因为量大会导致mysql挂掉。

拆分有好多方法,

  1. 使用limit,但是不会返回一个新的dataset,返回的还是旧的,导致每个小的dataset操作的还是大的dataset,用mysql的分页逻辑不行:order by id limit 10这样不可行

  2. 使用 filter会返回一个新的dataset,和之前的dataset是脱离的,利用over (partition by order by )rownumber, 给整个dataset数据集中每一行都打一个标识,然后通过过滤 0 < rownumber < 100来进行分页

  3. 抽样查询

抽样查询可以减少spark扫描行数,加快执行速度,减少磁盘io,具体影响根据抽样率而定

String sql = "SELECT * FROM " + tableName + " TABLESAMPLE(BERNOULLI " + sampleFraction + ") LIMIT " + limit;

开窗函数

OVER 关键字表示把聚合函数当成聚合开窗函数而不是聚合函数。

OVER 关键字后的括号中还可以添加选项用以改变进行聚合运算的窗口范围。

如果 OVER 关键字后的括号中的选项为空,则开窗函数会对结果集中的所有行进行聚合运算。

开窗函数的 OVER 关键字后括号中的可以使用 PARTITION BY 子句来定义行的分区来供进行聚合计算。

注意:与 GROUP BY 子句不同,PARTITION BY 子句创建的分区是独立于结果集的,创建的分区只是供进行聚合计算的,而且不同的开窗函数所创建的分区也不互相影响。

1.ROW_NUMBER顺序排序

row_number() over(order by score) as rownum 表示按score 升序的方式来排序,并得出排序结果的序号

PartitionBy分组

2.RANK跳跃排序

rank() over(order by score) as rank表示按 score升序的方式来排序,并得出排序结果的排名号。

这个函数求出来的排名结果可以并列,并列排名之后的排名将是并列的排名加上并列数

简单说每个人只有一种排名,然后出现两个并列第一名的情况,这时候排在两个第一名后面的人将是第三名,也就是没有了第二名,但是有两个第一名

3.DENSE_RANK连续排序

dense_rank() over(order by score) as dense_rank 表示按score 升序的方式来排序,并得出排序结果的排名号。

这个函数并列排名之后的排名只是并列排名加1

简单说每个人只有一种排名,然后出现两个并列第一名的情况,这时候排在两个第一名后面的人将是第二名,也就是两个第一名,一个第二名

4.NTILE分组排名

ntile(6) over(order by score)as ntile表示按 score 升序的方式来排序,然后 6 等分成 6 个组,并显示所在组的序号。

Spark 核心概念与基础编程实践:RDD、DataFrame 和 Dataset RDDDataFrame和Dataset。RDD 是最基本的分布式数据集抽象,适用于低级别的操作;DataFrame 提供了 SQL 查询风格和优化的执行引擎,适合结构化数据处理;Dataset 结合了强类型和优化执行,是推荐的默认数据抽象。通过了解它们的特点和转换关系,可以帮助我们在实际大数据处理任务中选择合适的工具,提升数据处理的效率和性能。 阅读详情

相关推荐

【Spark】(十)详解 Spark DataSet_spark dataset break

/4、读取文件,这里以csv文件为例。//3、DataSet rdd数据互换。//3、RDD转成DataFrame。//5、读取文件,并配置详细参数。//创建SparkSession。//2、集合转成dataset。//1、DataSet存储类型。//2、DataSet结构属性。//设置日志输出格式。

2501_90223316的博客 681

spark(七):DataSet

文章目录说明分享资料优势代码实例DataFrame和DataSet的区别总结 说明 本博客周五更新 本文记录spark 分布式数据类型DataSet的基本原理和使用方法。 DataSet是Spark1.6添加的分布式数据集合,Spark2.0合并DataSet和DataFrame数据集合API,DataFrame变成DataSet的子集。 DataSet继承RDD优点,并使用Spark SQL优化的执行引擎。支持JVM对象构建,支持函数式转换(map/flatmap/filter)等多种操作 分享 大

幻神舞的专栏 4238

Spark核心知识点和面试高频考点

Apache Spark 是一个开源的统一分布式计算引擎,它以内存计算为核心,提供了 Java、Scala、Python、R 等高级 API,并提供以下功能:Spark Core(核心基础):负责分布式任务调度、内存管理、容错、存储交互等基础功能。它引入了 RDD(弹性分布式数据集) 这一核心抽象,是所有其他组件的基石。Spark SQL(结构化数据处理):用于处理结构化与半结构化数据,提供了DataFrame、Dataset,以及SQL查询引擎。底层也是基于RDD进行了封装优化。Spark Streami

qq_37771475的博客 782

SparkSQL

SparkSQL SparkSQL Table of Contents 1. SparkSQL 是什么 1.1. SparkSQL 的出现契机 1.2. SparkSQL 的适用场景 2. SparkSQL 初体验 2.3. RDD 版本的 WordCount 2.2. 命令式 API 的入门案例 2.2. SQL 版本 WordCount 3. [扩展] C...

wz_TXWY的博客 919

spark面经

算法 反转链表 考点:现场编程 二分法 考点:现场编程 几个时间复杂度好的排序算法:桶排序,快速排序,二叉数排序,当然比较类排序(冒泡,选择,插入,归并e.g)也得复习复习 考点:每种排序的最坏情况时间复杂度和平均复杂度;比较类排序的现场编程;桶排序,快速排序,二叉数排序的思路(毕竟代码多,现场编程浪费时间) 算法编程题:去leetcode刷刷题吧,按顺序刷即可 spark ...

qq_27696709的博客 964

【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包

目录 通过/dev/tcp、/dev/udp shell给tcp或udp服务发送16进制报文指令 通过/dev/tcp、/dev/udp (https://blog.csdn.net/u010039418/article/details/86251470) 通过/dev/tcp、/dev/udp可以直接在shell脚本中发起tcp、udp连接,方便又高效,平时用于测试啥的还是挺方便的。 直接发送 格式 /dev/udp/ip/port 比如要向本地10001端口发送数据,可以使用 ec.

我的笔记本 1万+

聊聊SPARK小可爱

目录 SPARK是什么 SPARK ON YARN SPARK部署方式 SPARK的基本组件 SPARK算子分类及优化 SPARK的JOB,STAGE,TASK的认知和关系 SPARK任务的调度流程 Spark 资源并行度和数据并行度 设置 Spark的缓存策略 Spark的容错机制 Spark为什么比MR快 SPARK是什么 RDD 弹性分布式数据集 Resillient Distributed Dataset 弹性是因为 RDD -----> a list of ...

qq_38889342的博客 1146

如何区分Info与CoWoS封装?

这篇文章主要从Info、CoWoS封装的定义、Interposer的种类以及Info、CoWoS封装的种类三方面进行了介绍,希望读者能够有所收获

wangyubo1的博客 7938

Spark宝典

spark宝典

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 2782

ESP32-P4开发板实战:从零配置VSCode环境到点亮MIPI-DSI屏幕(避坑指南)

本文详细介绍了ESP32-P4开发板在VSCode环境下的配置流程,包括SDK安装、idf_component.yml依赖管理,以及MIPI-DSI屏幕驱动的实现方法。通过实战指南帮助开发者避开常见配置陷阱,快速完成从环境搭建到屏幕点亮的全流程,适用于物联网和嵌入式开发场景。

pp12345的博客 741

SEED-VIG数据集实战:5步搞定驾驶员疲劳检测模型(附Python代码)

本文提供了一份基于SEED-VIG数据集的驾驶员疲劳检测模型实战指南。通过五个核心步骤——数据准备、特征提取、模型训练、优化评估及部署思路,详细讲解了如何利用脑电信号构建分类器,并附有完整的Python代码,帮助开发者快速上手这一智能座舱关键技术。

w1x2y3的博客 263

Spark:SparkSQL学习总结

目录 1、SparkSQL概述 1.1、SparkSQL是什么 1.2、Spark SQL 的特点 1.3、RDD/DataFrame/DataSet 1.3.1、RDD 1.3.2、DataFrame 1.3.3、DataSet 1.3.4、三者的共同点/区别 1.4、SparkSQL执行流程 2、SparkSQL查询解析 2.1、SparkSession 2.2、Dat...

Jodness' Blogs 2769

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值

博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1).

qq_36958801的博客 1万+

Spark SQL是什么

1.Spark SQL应用程序的运行状态:可以通过Spark SQL的监控工具来实时监控应用程序的运行状态,包括任务的执行情况、资源的使用情况等。运维人员:管理Spark集群的部署、维护和安全性,包括Spark SQL的配置、监控和优化等,以保证Spark SQL的正常运行和安全性。2.Spark SQL应用程序的性能:可以通过Spark SQL的监控工具来监控应用程序的性能指标,包括任务的执行时间、吞吐量等。Executor进程:负责执行Spark SQL应用程序中的任务,包括数据的读取、处理和写入等。

Wxh_bai的博客 558

Qualcomm Camera 启动优化实战:Preview、Snapshot、ZSL 路径控制与时延剖析

在移动终端上,Camera 的“启动速度”与“抓拍响应”是决定用户体验的关键指标。以 Qualcomm Snapdragon 平台为代表,Camera Stack 涉及 HAL 初始化、Session 配置、ISP 路径激活、Buffer 分配、图像流启动等多个异步流程,稍有设计不当将导致 Preview 启动缓慢或抓拍延迟明显。本文基于高通平台架构与 CamX 实战经验,详细剖析 Preview 与 Snapshot 启动路径,重点分析 ZSL 模式下的全链路优化策略,给出具体时延测量方法与调试参数建议。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1582

【Frida Android】实战篇4:SSL Pinning 证书绑定绕过 Hook 教程(一)

在前两章中,我们学习了中间人抓包与 Hook 抓包的基础方法,这些方法在理想环境下能够有效获取网络请求数据。但在实际的企业级应用中,出于安全防护需求,很多 APP 会启用证书绑定(SSL Pinning)机制。这种机制会让客户端对服务器证书的校验更为严格,导致常规的抓包方法(即使将 BurpSuite/Charles 证书安装到系统信任区)也无法生效。因此,从本章开始,我们将系统学习 SSL Pinning 机制的绕过技术。SSL Pinning(证书绑定)是客户端校验服务器身份的进阶安全机制。

水滴石穿 1610

大数据高频面试题-Spark

4.10Spark 4.10.1 Spark有几种部署方式?请分别简要论述 1)Local:运行在一台机器上,通常是练手或者测试环境。 2)Standalone:构建一个基于Mster+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。 3)Yarn: Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。 4)Mesos:国内大环境比较.

weixin_41540362的博客 1892

YOLOv11官方代码库与预训练模型下载:介绍Ultralytics官方GitHub及模型权重(yolov11n.pt, yolov11s.pt等)

本文介绍了Ultralytics官方GitHub仓库和YOLOv11预训练模型。Ultralytics仓库是YOLO系列算法的官方实现,包含YOLOv11最新代码、预训练模型、文档和工具。仓库采用清晰的代码结构和活跃的更新策略,支持全流程开发。YOLOv11提供了5种不同规模的模型变体(YOLOv11n/s/m/l/x),在精度、速度和模型大小间权衡,适用于从移动设备到高精度检测等不同场景。各模型在COCO数据集上预训练,可直接使用或微调,满足多样化应用需求。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 5826

Spark 核心知识完全总结

Spark核心技术与优化摘要 Apache Spark作为统一的大数据处理引擎,其核心优势在于内存计算和DAG执行模型。主要特点包括:基于RDD的弹性分布式数据集、高效的DAG调度机制(以Shuffle为界的Stage划分)、统一内存管理(执行内存与存储内存动态借用),以及多种Shuffle优化策略(SortShuffle为默认方案)。针对数据倾斜问题,可通过加盐打散、扩大分区等方案解决。SparkSQL通过Catalyst优化器和Tungsten引擎实现高效查询,而Structured Streaming

m0_63960309的博客 708

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spark性能优化实战:从核心原理到数据倾斜与调优经验

大数据处理框架是分布式计算的基础设施,其核心价值在于通过内存计算和DAG调度替代传统的磁盘密集型模型,从而大幅提升迭代作业的效率。Spark作为主流的内存计算引擎,不仅支持批处理、SQL、流计算等统一计算场景,还通过Catalyst优化器和Tungsten执行引擎实现了深度性能优化。在实际工程中,合理选择RDD、DataFrame等抽象,并配置Executor内存、shuffle分区等参数,是保障集群稳定运行的关键。数据倾斜、内存溢出、小文件膨胀等问题常成为任务瓶颈,结合Spark UI定位和AQE动态优化

weixin_29062671的博客 201

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spark SQL架构

Spark SQL架构 Spark技术栈(Spark生态站):Spark SQL主要是对信息的处理,包括数据转化,数据抽取 Spark周边有Python/Scala/java/MLLib/等等 Spark可以集成Hive,Json,CSV,parqueet,JDBC,HBase,Other等等 Catalyst优化器是Spark SQL的核心。 Dataset与Frame的区别:??? 使用C...

TT15751097576的博客 579

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spark面试核心考点与性能优化实战解析

分布式计算框架Spark通过内存计算和DAG调度显著提升大数据处理效率,其核心RDD机制通过分区、依赖关系等特性实现弹性扩展。在工程实践中,性能优化需重点关注shuffle过程与内存管理,例如通过调整spark.shuffle.file.buffer等参数提升吞吐量,或使用map-side join解决数据倾斜问题。面试常考察RDD特性、故障恢复等架构原理,以及Structured Streaming实时处理等生态组件应用。掌握这些技术要点不仅能应对技术面试,更能有效解决实际生产环境中的分布式计算挑战。

weixin_34392435的博客 296

Spark性能调优实战:从执行计划到数据倾斜的全面优化指南

在大数据处理领域,性能优化是提升计算效率、降低资源成本的核心环节。其原理在于深入理解分布式计算引擎的执行模型与资源调度机制,通过分析执行计划、监控资源使用来定位瓶颈。这项技术的价值在于能够显著缩短作业运行时间,提高集群资源利用率,避免因数据倾斜或配置不当导致的作业失败。在Spark应用开发中,性能调优广泛应用于ETL流水线、实时分析、机器学习训练等场景。本文聚焦于Spark性能调优,针对数据倾斜这一常见挑战,详细解析了通过两阶段聚合、广播Join等技术手段进行优化的实战方案,帮助开发者构建高效稳定的数据处理

weixin_30784501的博客 403

大数据分析工程师入门8--Spark基础

本文为《大数据分析师入门课程》系列的第8篇,主要讲解大数据分析师必须了解的Spark基础知识,前7篇分别是JAVA基础、SCALA基础、SQL基础、SQL进阶、HIVE基础、HIVE进阶、...

大数据与人工智能 436

Tribuo:Java-first的TensorFlow-Spark互操作框架

在AI工程化落地中,模型训练(TensorFlow)与数据生产(Spark)长期存在语义割裂、特征不一致、跨语言调用低效等核心挑战。其本质是缺乏统一的特征抽象层与JVM原生推理能力。Tribuo作为LinkedIn开源的Java优先框架,通过‘特征即对象’元模型、SavedModel原生加载、零Python进程推理等设计,系统性解决TensorFlow与Spark之间的互操作性难题。它不替代任一生态,而是构建可移植、可调试、可观测的中间语义层,显著提升MLOps流水线稳定性与迭代效率,适用于推荐、风控、搜索

congdi7904的博客 451

Apache Spark 实战入门:从核心概念到环境搭建与数据分析案例

大数据处理的核心挑战在于如何高效、统一地应对海量数据的计算需求。传统MapReduce模型因其磁盘密集型计算和复杂的编程模型,在开发效率和实时性上存在瓶颈。Apache Spark通过引入弹性分布式数据集(RDD)和内存计算范式,从根本上提升了数据处理速度,并提供了统一的编程模型。其技术价值在于将批处理、流处理、机器学习和图计算整合在一个框架下,极大地降低了技术栈复杂度和运维成本。在应用场景上,Spark特别适合处理逻辑复杂多变、需要低延迟交互式查询或实时响应的数据任务。本文以解决常见的“object sp

weixin_30500473的博客 619
上一篇: druid连接池疑似连接泄露,导致应用线程全部卡在获取连接问题排查
下一篇: spring启动过程中动态从数据库中加载KafkaListener方式
beautyful-code
博客等级 码龄12年 94粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值