实用指南:[论文阅读] 从 5MB 到 1.6GB 数据:Java/Scala/Python 在 Spark 中的性能表现全解析

news/2025/11/25 17:40:02/文章来源:https://www.cnblogs.com/tlnshuju/p/19269393

实用指南:[论文阅读] 从 5MB 到 1.6GB 数据:Java/Scala/Python 在 Spark 中的性能表现全解析

2025-11-25 17:36  tlnshuju  阅读(0)  评论(0)    收藏  举报

从 5MB 到 1.6GB 数据:Java/Scala/Python 在 Spark 中的性能表现全解析

arXiv:2510.19012 (cross-list from cs.DC)
Comparative analysis of large data processing in Apache Spark using Java, Python and Scala
Ivan Borodii, Illia Fedorovych, Halyna Osukhivska, Diana Velychko, Roman Butsii
Comments: CITI 2025, 3rd International Workshop on Computer Information Technologies in Industry 4.0, June 11-12, 2025, Ternopil, Ukraine. The article includes 10 pages, 5 figures, 9 tables
Subjects: Distributed, Parallel, and Cluster Computing (cs.DC); Databases (cs.DB); Programming Languages (cs.PL); Software Engineering (cs.SE)

1. 一段话总结

本研究针对Apache Spark中使用Java、Python、Scala三种编程语言处理大数据的性能展开对比分析,以ETL流程(提取-转换-加载)为核心,将来自open-meteo(1.6GB 2024年小时气温数据)和simplemaps.com(5MB 47k城市地理数据)的数据集加载到Apache Iceberg表中,在统一硬件(Windows 10、16GB RAM、Ryzen 5 4600H)和软件配置(Spark 3.5.1、Iceberg 1.7.1)下测试执行时间;结果显示Python在中小数据集(world_cities表6.71秒、weather_events表46.34秒)处理中更快,而Scala在复杂多步骤ETL任务(weather_hourly_events表374.42秒)中表现最优(优于Java的379.8秒和Python的398.32秒),最终得出“语言选择需结合数据集规模与任务复杂度,需同时考虑Spark参数与语言执行特性”的结论。


2. 思维导图

在这里插入图片描述


3. 详细总结

1. 研究背景与意义
  • 研究对象:Apache Spark中Java、Python、Scala三种编程语言的大数据处理性能差异,聚焦ETL全流程(内容提取、转换、加载到Apache Iceberg表)。
  • 研究必要性:现有文献多关注单一语言或部分处理阶段,缺乏“统一安装下全周期语言影响”的综合分析;而Spark语言选择会显著影响执行时间、内存消耗、扩展性,尤其大规模数据处理中,几秒延迟可能放大为小时级耗时。
  • 核心目标:在相同Spark配置、输入数据集下,对比三种语言的ETL性能,为大数据系统设计供应语言选择依据。
2. 相关工作综述
研究者/年份研究内容关键结论
Vergas(2022)Spark+Scala环境下,Iceberg vs Delta Lake/Hudi(云存储)Iceberg读速最优(比Hudi快20%、比Delta Lake快10-15%),但更新速度仅为Delta Lake的1/2
Ciesielski(2024)PySpark+Iceberg处理金融大数据Iceberg凭借ACID事务和版本控制,降低数据访问时间,适合需数据完整性的场景
Ahmed(2020)Spark vs Hadoop(10节点集群,60TB存储,WordCount/TeraSort)Spark性能更优:WordCount快2倍,TeraSort快14倍(Scala实现,原生API兼容)
Ketu(2020)Spark vs Hadoop(迭代/流处理任务,多语言测试)Spark迭代任务快2-10倍(内存计算优势);Scala用于高性能场景,Python用于机器学习集成
3. 研究方法
(1)数据集详情
数据来源数据内容数据规模核心字段
simplemaps.com全球城市地理信息5MB CSV,47k条City、Lat(纬度)、Lng(经度)、Population、Country_iso2
open-meteo2024年全球小时气温数据1.6GB CSVDate(时间戳)、Temperature_2m、Lat、Lng
合并后数据城市-小时气温关联数据(ETL目标)-含气温、地理、人口、国家等综合字段
(2)实验环境配置
  • 硬件环境:Windows 10 Home(64位)、16GB RAM、AMD Ryzen 5 4600H(3.00GHz)、Radeon Graphics;JVM堆内存约3934MB,支持12核并行任务。
  • 软件环境
    • 框架:Apache Spark 3.5.1(分布式处理)、Apache Iceberg 1.7.1(分析型表管理)
    • 语言:Java 11.0.14、Scala 2.12.18、Python 3.11
    • 开发工具:PyCharm(Python)、IntelliJ IDEA(Java/Scala)
(3)统一Spark配置(保障实验公平性)
配置参数描述
master = local[*]本地多线程模式,利用所有可用CPU核心
spark.sql.catalog.local.typeIceberg目录类型:Hadoop(基于文件系统存储)
spark.executor.instances = 5启用5个executor(共6个执行单元)
spark.executor.cores = 2每个executor分配2个CPU核心
spark.driver.cores = 2Driver分配2个CPU核心
spark.sql.adaptive.enabled = true启用自适应查询执行(优化查询计划)
spark.memory.offHeap.enabled = true启用堆外内存,减少JVM垃圾回收开销
(4)ETL流程设计
  1. 提取阶段:Spark读取CSV文件,通过header=true识别表头、inferSchema=true自动推断数据类型(三种语言代码见表7)。
  2. 转换阶段
    • 数据清洗:dropDuplicates()移除重复项;to_date()转换时间格式。
    • 表关联:用join()基于Lat/Lng字段合并城市与天气数据,小数据集(城市数据)用broadcast()优化关联速度。
  3. 加载阶段:数据写入Iceberg表,采用overwrite模式(保留历史数据)+ overwrite-mode=dynamic(最小化重写批次),三种语言代码见表8。
4. 实验结果
(1)各语言执行时间对比(核心结果)
Apache Iceberg表名Java(秒)Scala(秒)Python(秒)性能排序
world_cities(小数据集)9.629.136.71Python > Scala > Java
weather_events(中材料集)50.5647.7246.34Python > Scala > Java
weather_hourly_events(繁琐大数据集)379.8374.42398.32Scala > Java > Python
(2)Apache Iceberg存储结构
5. 结论与未来方向
  • 核心结论
    1. 性能与数据集规模非线性相关:Python适合中小数据集(高-level API高效,JVM开销小);Scala适合复杂ETL(原生Spark语言,优化更充分,比Python快6%)。
    2. 语言执行特性影响性能:即使安装相同,JVM预热时间、垃圾回收、序列化效率仍导致执行时间差异。
  • 未来研究方向
    1. 扩展表格式对比:研究Delta Lake、Apache Hudi与Iceberg的性能差异。
    2. 云原生环境测试:验证不同集群规模、资源分配下的性能稳定性。
    3. 优化策略迭代:针对不同语言设计定制化Spark配置。

4. 关键问题

问题1:三种编程语言在Apache Spark处理不同规模内容集时的性能差异具体表现如何?造成差异的核心原因是什么?
  • 答案
    性能差异随数据集规模变化显著:①小/中数据集(world_cities、weather_events):Python最快(6.71秒、46.34秒),优于Scala(9.13秒、47.72秒)和Java(9.62秒、50.56秒),原因是Python高-level API简洁,无需JVM启动预热, overhead更低;②复杂大数据集(weather_hourly_events):Scala最优(374.42秒),优于Java(379.8秒)和Python(398.32秒),原因是Scala是Spark原生语言,支持低-level函数调用,与Catalyst优化器集成更紧密,且避免Python与JVM间的序列化开销(Py4J桥接损耗)。
挑战2:本研究中Apache Iceberg的存储设计(如分区、文件格式)对ETL流程性能有哪些关键影响?
问题3:为确保实验结果的公平性与可复现性,本研究在实验环境和Spark配置上做了哪些关键控制?
  • 答案
    研究通过“硬件统一、软件版本固定、配置参数一致”保障公平性:①硬件环境统一:固定使用Windows 10、16GB RAM、AMD Ryzen 5 4600H处理器,JVM堆内存3934MB,12核并行任务,避免硬件差异影响;②软件版本固定:Spark 3.5.1、Iceberg 1.7.1、Java 11、Scala 2.12.18、Python 3.11,排除版本兼容性导致的性能波动;③Spark参数一致:所有语言共享相同配置(如master=local[*]、5个executor、自适应查询启用、堆外内存开启),且ETL流程(读CSV、转换、写Iceberg)的逻辑完全一致(仅语言语法差异),确保性能差异仅源于语言特性。

总结

这篇论文没有讲复杂的理论,而是用 “接地气” 的实验解决了大信息开发的实际痛点 ——Spark 语言选型。它的价值不在于提出新算法,而在于用统一、可复现的实验,把 “经验之谈” 变成了 “数据结论”:小 / 中数据集选 Python(兼顾效率和性能),复杂大数据集选 Scala(性能最优),Java 可作为稳定备选。对于得优化 Spark ETL 性能的开发者来说,这篇论文的结论直接能用,是一篇 “实用型” 的研究。

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

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

相关文章

2025年塑料托盘实力厂家权威推荐榜单:高质量塑料周转筐/塑料周转箱/新型电子仪表箱实力厂家精选

专注工业包装容器十余年的供应链专家,基于实地考察与数据解析,为您呈现一份客观可靠的采购参考。 在现代物流与仓储体系中,塑料托盘作为基础承载工具,其性能直接影响货物运输效率与存储安全性。据行业数据显示,20…

2025年真空回火炉厂家权威推荐榜单:回火炉热处理‌/回火炉‌/专业的回火炉‌源头厂家精选

一台高品质的真空回火炉,能将钛合金部件的焊接合格率提升至99.2%以上,同时将设备故障停机时间缩短40%,成为高端制造业不可或缺的工艺装备。 在航空航天、精密模具、半导体等高端制造领域,真空回火炉作为提升材料性…

论文阅读——Segment Anything(Meta AI)——SAM - 实践

论文阅读——Segment Anything(Meta AI)——SAM - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

2025年附近牙齿种植医院哪家强?最新排名揭晓,烂牙修复/牙隐裂修复/修正牙齿修复/牙齿磨损严重怎么修复/牙齿种植牙齿种植推荐选哪家

行业权威榜单发布 随着口腔健康意识的提升,牙齿种植已成为缺牙修复的主流选择。面对众多齿科机构,患者往往难以抉择。基于市场调研数据、患者口碑反馈及专业技术实力评估,现发布2025年牙齿种植机构综合排名,为市民…

2025年立式内圆磨床优质厂家权威推荐榜单:高品质立式内圆磨床‌/高质量立式内圆磨床‌/新型立式内圆磨床‌源头厂家精选

在精密制造领域,一台高精度的立式内圆磨床,能将关键零部件的内圆加工精度控制在0.001毫米以内,相当于人类头发丝直径的六十分之一。 随着新能源汽车、航空航天等高端制造业的快速发展,立式内圆磨床作为精密加工的核…

2025年11月乐清装修,半包,全包,全屋定制,别墅装修公司口碑推荐榜单TOP5精选指南

随着乐清市高端住宅市场的快速发展,别墅装修行业在2025年迎来了新一轮的技术革新与服务升级。本文基于市场调研和用户反馈,整理了五家在当地具有良好口碑的别墅装修产品服务商,为业主提供参考选择。本排名仅代表推荐…

云原生周刊:Kubernetes 如何成为新的 Linux

云原生热点 OpenFGA 成为 CNCF 孵化项目 OpenFGA 是一款开源的细粒度授权系统(Authorization Engine),专为现代分布式系统与云原生场景设计。它在 2025 年正式成为 CNCF 的孵化级项目,标志着其在 ReBAC(关系型访问…

云原生周刊:Kubernetes 如何成为新的 Linux

云原生热点 OpenFGA 成为 CNCF 孵化项目 OpenFGA 是一款开源的细粒度授权系统(Authorization Engine),专为现代分布式系统与云原生场景设计。它在 2025 年正式成为 CNCF 的孵化级项目,标志着其在 ReBAC(关系型访问…

题解:P9187 [USACO23OPEN] Field Day S

很详细的解释,不然我以后再看就又看不懂了全世界都在研究怎么赢,只有我在大输特输。 如此状态,如何 NOIP? 题面简述 link 给出 \(N\) 个长为 \(C\) 的字符串,每个字符串由 G 或 H 组成,对于每一个字符串,求出它…

【IEEE和ACM双出版 | 连续4届稳定EI检索 | 会议录用率高】第五届计算建模、仿真与数据分析国际学术会议(CMSDA 2025)

由中国石油大学主办,中国民航大学作为支持单位的第五届计算建模、仿真与数据分析国际学术会议(CMSDA 2025)将于2025年12月12-14日即将在中国青岛召开。【连续4届稳定EI检索】 【CMSDA已上线IEEE官网,ISBN号:(ISBN:…

c++ 3

##task 1 #代码1 #pragma once2 3 #include <iostream>4 #include <string>5 6 class Button {7 public:8 Button(const std::string &label_);9 const std::string& get_label() const; …

【2025-11-24】又到周末

20:00普通人的毛病在责人太严,责己太宽。埋怨环境还由于缺乏自省自责的习惯。自己的责任必须自己担当起,成功是我的成功,失败也是我的失败。每个人是他自己的造化主,环境不足畏,犹如命运不足信。——朱光潜这个周…

2025年广告边框铝型材制造厂权威推荐榜单:葡萄架铝合金型材/门窗铝合金型材/工业铝型材源头厂家精选

在广告标识行业持续升级和市场要求日益严格的背景下,广告边框铝型材作为各类广告展示载体不可或缺的组成部分,其市场需求稳步增长,品质要求不断提高。 广告边框铝型材作为一种关键的广告标识材料,在户外广告、展览…

ECCV 2024!面向领域泛化分割的文本查询驱动掩码Transformer| 语义分割 | 计算机视觉

ECCV 2024!面向领域泛化分割的文本查询驱动掩码Transformer| 语义分割 | 计算机视觉01 论文概述 论文名称:Textual query-driven mask transformer for domain generalized segmentation —— 面向领域泛化分割的文本…

刘二大人PyTorch深度学习实践第二讲笔记

碎碎念: 开个新坑,系统学一遍深度学习好做毕设,能到河工大挺激动的,赶紧给刘二大人投自荐简历,但是已读不回,还是自己太菜了........不过已经到河工大了挺好的,梦校 第二讲 线性模型可能x(输入)到y(答案)是…

最新榜单出炉!2025年成都必吃火锅排行榜,美食/烧菜火锅/特色美食/火锅/社区火锅成都火锅品牌口碑推荐榜

成都火锅市场格局深度解析 作为享誉全国的美食之都,成都火锅市场始终保持着旺盛的生命力与创新活力。据最新市场调研数据显示,成都火锅行业已形成多元化发展格局,其中以特色烧菜火锅为代表的新兴品类表现尤为突出。…

C# 多线程(学习笔记13)

1.进程与线程 进程是资源管理的最小单位,有自己的内存空间,一个进程可以有多个线程,各线程之间共享进程的系统资源。 多线程的意义在于多任务的并发执行。多线程对于自动化领域意义重大,例如一个线程去访问硬件设备…

【SPIE出版 | 连续四届均实现EI SCOPUS双检索 | 最快会后3个月检索】第五届计算机、信息工程与电子材料国际学术会议(CTIEEM 2025)

第五届计算机、信息工程与电子材料国际学术会议(CTIEEM 2025)将于2025年12月12日至14日在中国哈尔滨市举行。【连续四届均实现EI & SCOPUS双检索,最快会后3个月检索!】 【哈尔滨信息工程学院主办,12月与您相聚…

(让 Java IA MCP 更简单 )Solon AI v3.7.2 发布

Solon AI & MCP 是 Java 智能体开发框架,支持 Java 8-25,提供统一接口集成主流 AI 模型。框架支持聊天模型、生成模型、RAG 知识库、MCP 协议等多种 AI 能力,并提供与 Spring 等框架的兼容性。技术预览展示了简…

Unity 使用Blit生成图片踩的坑

p { line-height: 2; font-size: 18px } 引言在项目中经常需要把shader处理过的纹理保存成图片,如果直接获取材质的源纹理并保存,保存的是未经shader处理的原始纹理。有一种方法是使用Unity中的Blit函数读出经shader…