当前位置: 首页 > 知识库问答 >
问题:

使用Spark Java excel从excel文件加载数据

羊和光
2023-03-14

我想使用Spark Session2.2从HDFS中的Excel文件加载数据。下面是我的Java代码和我得到的异常。

Dataset<Row> df = 
            session.read().
            format("com.crealytics.spark.excel").
            option("location", pathFile).
            option("sheetName", "Feuil1").
            option("useHeader", "true").
            option("treatEmptyValuesAsNulls", "true").
            option("inferSchema", "true").
            option("addColorColumns", "false").
            load(pathFile);

我有个例外:

java.lang.nosuchmethoderror:org.apache.poi.ss.usermodel.workbook.close()V at com.crealytics.spark.excel.excelrelation.com$crealytics$spark$excel$excelrelation$$$getexcerpt(excelrelation.scala:81)at com.crealytics.spark.excel.excelrelations$$anonfun$inferschema$1.apply(excelrelation.scala:270)at EL.ExcelRelation.InferSchema(ExcelRelation.scala:269)在com.crealytics.spark.excel.ExcelRelation.(ExcelRelation.scala:97)在com.crealytics.spark.excel.defaultSource.createration(DefaultSource.scala:35)在com.crealytics.spark.excel.defaultSource.createrelation(DefaultSource.scala:14)在A:330)位于org.apache.spark.sql.dataframeReader.load(dataframeReader.scala:152)

共有1个答案

田志尚
2023-03-14

这看起来像是一个依赖问题。检查在您的POM/SBT中是否有一些库没有使用不同版本的Apache POI。例如,您可以使用mvn depenency:tree(https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolution-conflects-using-the-dependency-tree.html)或适当的SBT/gradle...命令。

当发现有冲突的依赖项(workbook.close()方法丢失的依赖项)时,可以将其从导入中排除。

显然,close()方法是在这里添加的:https://github.com/apache/poi/commit/47a8f6cf486b974f31ffd694716f424114e647d5

 类似资料:
  • 很多时候,我们想要绘制文件中的数据。 有许多类型的文件,以及许多方法,你可以使用它们从文件中提取数据来图形化。 在这里,我们将展示几种方法。 首先,我们将使用内置的csv模块加载CSV文件,然后我们将展示如何使用 NumPy(第三方模块)加载文件。 import matplotlib.pyplot as plt import csv x = [] y = [] with open('example

  • 嗨,我正试图从pdb文件中读取数据 是否有其他方法打开MS pdb文件,并具体提取GUID

  • 问题内容: 在我的应用程序中,我生成一个公钥/私钥对,并将其存储以供以后在磁盘上使用。加载并重新初始化私钥可以正常工作,但是对于私钥,我得到了一个未知的KeySpec类型:java.security.spec.PKCS8EncodedKeySpec- 我不知道为什么。 这就是我创建和保存密钥的方式(简化了一些代码以便于阅读): 下次加载私钥可以正常工作: 公用密钥的类似代码惨遭失败: 那我在做什么

  • 我刚接触Cassandra Spark,并尝试使用Spark主集群将数据从文件加载到Cassandra表。我遵循以下链接中给出的步骤 http://docs.datastax.com/en/datastax_enterprise/4.7/datastax_enterprise/spark/sparkImportTxtCQL.html 在第8步,数据显示为整数数组,但当我使用相同的命令时,结果显示为

  • 我已经创建了一个函数来使用URL从文件中获取文本。该函数使用jQuery的来获取文件。这个函数工作得很好,但这里的问题是是异步的,所以输出的顺序是不可预测的。我尝试将它更改为同步的,但它完全冻结了页面。我尝试过等待它响应,我想我会花点时间,但它没有起作用。 这是我的密码。 此函数输出 这就产生了一个问题,因为我无法文件的内容,因为它还没有加载,因为异步的get函数。那么,有没有办法告诉函数等待返回

  • 问题内容: 我只想从Excel文件(xlsx)中读取10行,而不一次加载整个文件,因为这不能在我的一台计算机上完成(内存不足)。 我尝试使用 看来文件先被加载然后又被分成几部分。 如何只读取第一行? 问题答案: 由于文件的性质(本质上是一堆压缩在一起的文件),您不能将文件戳到任意字节,而希望它成为您感兴趣的表中表格的第N行的开头。 你能做的最好是用与(从文件顶部跳过行)和(从底部跳跃行)参数。但是