使用Spark Java excel从excel文件加载数据
我想使用Spark Session 2.2从HDFS中的Excel文件加载数据。下面是我的Java代码和我得到的异常使用Spark Java excel从excel文件加载数据,java,excel,apache-spark,hdfs,spark-excel,Java,Excel,Apache Spark,Hdfs,Spark Excel,我想使用Spark Session 2.2从HDFS中的Excel文件加载数据。下面是我的Java代码和我得到的异常 Dataset<Row> df = session.read(). format("com.crealytics.spark.excel"). option("location", pathFile). option("sheetName", "Feuil1").
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);
Dataset df=
session.read()。
格式(“com.crealytics.spark.excel”)。
选项(“位置”,路径文件)。
选项(“sheetName”、“Feuil1”)。
选项(“useHeader”、“true”)。
选项(“treatEmptyValuesAsNulls”、“true”)。
选项(“推断模式”、“真”)。
选项(“addColorColumns”、“false”)。
加载(路径文件);
我得到了一个例外:
java.lang.NoSuchMethodError:org.apache.poi.ss.usermodel.Workbook.close()V
在com.crealytics.spark.excel.ExcelRelation.com$crealytics$spark$excel$ExcelRelation$$GetExcept(ExcelRelation.scala:81)
在com.crealytics.spark.excel.ExcelRelation$$anonfun$inferSchema$1.apply上(ExcelRelation.scala:270)
在com.crealytics.spark.excel.ExcelRelation$$anonfun$inferSchema$1.apply上(ExcelRelation.scala:269)
位于scala.Option.getOrElse(Option.scala:121)
在com.crealytics.spark.excel.ExcelRelation.inferSchema(ExcelRelation.scala:269)上
在com.crealytics.spark.excel.ExcelRelation(ExcelRelation.scala:97)上
在com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:35)上
在com.crealytics.spark.excel.DefaultSource.createRelation上(DefaultSource.scala:14)
在com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:8)上
位于org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:330)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
这看起来像是一个依赖性问题。检查pom/sbt中的一些库是否未使用不同版本的ApachePOI。例如,您可以使用mvn Dependency:tree()或适当的SBT/Gradle。。。指挥部 当发现冲突的依赖项(即缺少工作簿.close()方法的依赖项)时,可以将其从导入中排除 显然这里添加了
close()
方法: