使用Apache Spark处理Excel文件的方法
更新时间:2024年01月22日 11:39:27 作者:i查拉图斯特拉如是
Excel作为功能强大的数据处理软件,广泛应用于各行各业,从企业管理到数据分析,可谓无处不在,本文介绍使用Apache Spark处理Excel文件的简易指南,感兴趣的朋友一起看看吧
目录
- 前言
- 操作
- 导入包
- 测试数据
- 首先
- 代码示例
- 总结一下
- 引用
- 最后
前言
在日常的工作中,表格内的工具是非常方便的x,但是当表格变得非常多的时候,就需要一些特定的处理。Excel作为功能强大的数据处理软件,广泛应用于各行各业,从企业管理到数据分析,可谓无处不在。然而,面对大型且复杂的数据,Excel的处理能力可能力不从心。
对此,我们可借助Apache Spark这一分布式计算框架,凭借其强大的计算与数据处理能力,快速有效地处理Excel数据。这些数据进行一个分析,整理,筛选,排序。分析整理有用的内容。
操作
创建一个spark项目,在IntelliJ IDEA中创建Spark项目时,默认的目录结构如下:
project-root/ │ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── (Java source files) │ │ └── scala/ │ │ └── (Scala source files) │ └── test/ │ ├── java/ │ │ └── (Test Java source files) │ └── scala/ │ └── (Test Scala source files) ├── resources/ │ └── (Resource files) └── target/ └── (Compiled output and build artifacts)
导入包
在build.sbt中添加操作文件的包
libraryDependencies ++= Seq( "org.apache.spark" %% "spark-core" % sparkVersion, "org.apache.spark" %% "spark-sql" % sparkVersion, "org.apache.spark" %% "spark-mllib" % sparkVersion, "org.apache.spark" %% "spark-streaming" % sparkVersion, "com.norbitltd" %% "spoiwo_2.12" % "1.4.1", "com.crealytics" %% "spark-excel" % "0.13.7", "com.monitorjbl" %% "xlsx-streamer" % "2.1.0" )
测试数据
name |
age |
Mic |
1 |
Andy |
3 |
Steven |
1 |
首先
使用Spark读取Excel文件十分简便。只需在DataFrame API中指定文件路径及格式,Spark即可自动导入Excel文件并将其转成DataFrame,进而展开数据处理和分析。
代码示例
Spark不但提供多样的数据处理方式,更在DataFrame API中支持筛选、聚合和排序等操作。此外,内置丰富的数据处理函数和操作符使处理Excel数据更为便捷。
package com.example.spark import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.SparkSession object SparkTest { def main(args: Array[String]): Unit = { //scala版本 val sparkConf = new SparkConf() sparkConf.setMaster("local") //本地单线程运行 sparkConf.setAppName("testJob") // val sc = new SparkContext(sparkConf) val spark = SparkSession.builder().config(sparkConf) .appName("Excel Demo") .getOrCreate() // 读取 Excel 文件 val df = spark.read .format("com.crealytics.spark.excel") .option("dataAddress", "'Sheet2'!A1:B2") // 可选,设置选择数据区域 例如 A1:C2。 .option("useHeader", "false") // 必须,是否使用表头,false的话自己命名表头(_c0),true则第一行为表头 .option("treatEmptyValuesAsNulls", "true") // 可选, 是否将空的单元格设置为null ,如果不设置为null 遇见空单元格会报错 默认t: true .option("inferSchema", "true") // 可选, default: false //.option("addColorColumns", "true") // 可选, default: false //.option("timestampFormat", "yyyy-mm-dd hh:mm:ss") // 可选, default: yyyy-mm-dd hh:mm:ss[.fffffffff] //.option("excerptSize", 6) // 可选, default: 10. If set and if schema inferred, number of rows to infer schema from //.option("workbookPassword", "pass") // 可选, default None. Requires unlimited strength JCE for older JVMs==== //.option("maxRowsInMemory", 20) // 可选, default None. If set, uses a streaming reader which can help with big files==== .schema(schema) // 可选, default: Either inferred schema, or all columns are Strings // .option("header", "true") .load("path/to/excel/file.xlsx") // 显示 DataFrame 的内容 df.show() // +-------+---+ // | name|age| // +-------+---+ // | Mic| 1| // | Andy| 3| // | Steven| 1| // +-------+---+ // 将 DataFrame 写入 Excel 文件 df.write .format("com.crealytics.spark.excel") .option("dataAddress", "'Sheet'!A1:B2") .option("useHeader", "true") //.option("dateFormat", "yy-mmm-d") // Optional, default: yy-m-d h:mm //.option("timestampFormat", "mm-dd-yyyy hh:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss.000 .mode("append") // Optional, default: overwrite. .option("header", "true") .save("path/to/save/excel/file.xlsx") } }
数据处理结束后,可将结果保存在全新Excel文件或其他格式文件中。借助DataFrame API,无论保存在本地文件系统还是云端,均能轻松实现。保留数据亦可依照需求选择不同输出格式,如CSV,XLSX等。
总结一下
虽然仅处理基础数据,但在集群环境下,Spark展现出优秀的大规模数据处理能力。无论海量Excel数据还是复杂的结构化数据,都在Spark协助下,能轻松应对并满足各种数据处理与分析任务。
借助Apache Spark处理Excel文件,充分发挥分布式计算潜能,可让数据处理与分析过程更为高效出色,同时也极大提升数据处理效率和准确性。希望本文能让您对Spark处理Excel有更深入了解,在实践中更好地应用。
引用
https://github.com/crealytics/spark-excel
最后
到此这篇关于使用Apache Spark处理Excel文件的简易指南的文章就介绍到这了,更多相关Apache Spark处理Excel文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- Apache Hudi集成Spark SQL操作hide表
- Apache Spark 2.0 在作业完成时却花费很长时间结束
- 详解如何使用Spark和Scala分析Apache访问日志
- 2018即将推出的Apache Spark 2.4都有哪些新功能
- Apache
- Spark
- Excel
相关文章
-
Apache2.2以上版本与Tomcat整合配置及负载均衡实现
今天技术总监叫实现Apache和Tomacat整合,结果找了很多的资料,发现最方便的还是本文啊.apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便,感兴趣的朋友可以了解下啊 2013-01-01
-
centos6.8下hadoop3.1.1完全分布式安装指南(推荐)
这篇文章主要介绍了centos6.8下hadoop3.1.1完全分布式安装指南,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 2019-11-11
-
详解firewall的规则设置与命令(白名单设置)
这篇文章主要介绍了详解firewall的规则设置与命令(白名单设置),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2019-11-11
-
Linux安装apache服务器的配置过程
这篇文章主要介绍了Linux安装apache服务器的配置过程,启动apache的命令写法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2021-11-11
-
Win10 + Ubuntu 16.04双系统完美安装教程【详细】
这篇文章主要介绍了Win10 + Ubuntu 16.04双系统完美安装教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 2019-10-10
-
新版ubuntu20.04 使用root用户登录系统的详细教程
这篇文章主要介绍了新版ubuntu20.04 使用root用户登录系统的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2020-08-08
-
浅谈互斥锁为什么还要和条件变量配合使用
下面小编就为大家带来一篇浅谈互斥锁为什么还要和条件变量配合使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2017-01-01
-
CentOS中的正则表达式
这篇文章主要介绍了CentOS中的正则表达式 ,本文给大家介绍的非常详细,需要的朋友可以参考下 2018-04-04
-
Linux 僵尸进程产生原因及解决方法
这篇文章主要介绍了Linux 僵尸进程产生原因及解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-02-02
-
关于进程间通信的Linux小程序
这篇文章主要为大家详细介绍了一个关于进程间通信的Linux小程序,主要利用共享内存实现进程间通信,使用管道实现进程间竞争关系,感兴趣的朋友可以参考一下 2016-05-05