使用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文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux NFS 服务安全加固方法

    linux NFS 服务安全加固方法

    NFS(Network File System)是 FreeBSD 支持的一种文件系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。不正确的配置和使用 NFS,会带来安全问题,需要的朋友可以参考下
    2018-02-02
  • Linux使用Fail2ban防护恶意攻击的操作指南

    Linux使用Fail2ban防护恶意攻击的操作指南

    在当今互联网环境中,服务器安全已成为每个系统管理员和开发者必须重视的核心课题,Fail2ban 是一款轻量级但功能强大的入侵防御工具,本文将深入探讨如何在 Linux 系统中部署和配置 Fail2ban,结合 Java 应用场景提供实用示例,需要的朋友可以参考下
    2026-04-04
  • jmeter在linux系统下运行及本地内存调优的方法详解

    jmeter在linux系统下运行及本地内存调优的方法详解

    这篇文章主要介绍了jmeter在linux系统下运行及本地内存调优的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Apache Rewrite实现URL的301跳转和域名跳转

    Apache Rewrite实现URL的301跳转和域名跳转

    Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式
    2012-05-05
  • keeplive+mysql+drbd高可用架构安装步骤

    keeplive+mysql+drbd高可用架构安装步骤

    本地(master)与远程主机(backup)的保证实时同步,如果本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据
    2017-08-08
  • Linux云服务器开放端口详解

    Linux云服务器开放端口详解

    文章简要介绍了在阿里云添加安全组规则的步骤:访问官网控制台,手动添加规则,选择TCP/UDP协议,填写目标端口及源IP范围,添加备注后点击保存即可开放端口,最后提醒读者这是个人经验,欢迎参考与支持
    2025-08-08
  • Linux进程状态和优先级的用法及说明

    Linux进程状态和优先级的用法及说明

    文章详细介绍了操作系统中进程状态(运行、阻塞、挂起)的概念及Linux操作系统中的具体状态(R、S、D、T、t、X、Z),解释了进程的运行、阻塞、挂起状态的区别,具体状态标识及操作方法,如使用kill命令或Ctrl+C中断进程等
    2026-04-04
  • CentOS 7 网络配置详解

    CentOS 7 网络配置详解

    本篇文章主要介绍了CentOS 7 网络配置,现在分享给大家,也给大家做个参考。需要的朋友可以参考下。
    2016-11-11
  • LINUX启动/重启/停上MYSQL的命令(详解)

    LINUX启动/重启/停上MYSQL的命令(详解)

    下面小编就为大家带来一篇LINUX启动/重启/停上MYSQL的命令(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 安装Ubuntu 20.04后要做的事(小白教程)

    安装Ubuntu 20.04后要做的事(小白教程)

    这篇文章主要介绍了安装Ubuntu 20.04后要做的事(小白教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论