Spark读取Excel文件需要先添加对应的第三方库
<dependency>
<groupId>com.crealytics</groupId>
<artifactId>spark-excel_2.12</artifactId>
<version>3.3.1_0.18.5</version>
</dependency>
将上面的依赖添加上即可
测试数据如下图
代码模板如下
import org.apache.spark.sql.{DataFrame, SparkSession}
/**
* @Author: J
* @Version: 1.0
* @CreateTime: 2023/4/25
* @Description: 读取Excel表
* */
object ReadExcel {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.master("local[*]")
.appName("Read Excel file")
.getOrCreate()
val excelDF: DataFrame = spark.read
.format("com.crealytics.spark.excel")
// .option("sheetName", "Sheet1") // 读取的Sheet页
.option("header", "false") // 第一行不作为表头,如果为true则作为表头
.option("dataAddress", "'page1'!A3:E6") // 'page1'Sheet页名称(也可以选用'sheetName'的方式进行配置),A3代表从第几行读取(3则代表从第三行),E6代表行的范围
.option("treatEmptyValuesAsNulls", "true") // 空值是否为作为null
.load("file:///E:\\TestData\\TEST.xlsx") // 如果是本地文件需要标注'file:///实际路径'因为spark会默认将HDFS作为文件系统
val excelHeader = Seq("id2", "name2", "age2", "hobbit2", "phoneNum") // 自定义表头名称
val frameDF = excelDF.toDF(excelHeader: _*)
frameDF.show()
spark.stop()
}
}
结果数据如下
+-----------+-------------+----+------------------+-----------+
|1kanchu0002|1000000009QPL| 22|篮球-羽毛球-乒乓球|13388889909|
|1kanchu0003|1000000009QPL| 22|篮球-羽毛球-乒乓球|13388889909|
|1kanchu0004|1000000009QPL| 22|篮球-羽毛球-乒乓球|13388889909|
|1kanchu0001|1000000009QPL| 22|篮球-羽毛球-乒乓球|13388889909|
+-----------+-------------+----+------------------+-----------+
具体的代码模板大概就这些内容了,要根据实际的开发需求进行逻辑变更或配置变更.