【问题标题】:Loading Data from an excel File using Spark Java Excel使用 Spark Java Excel 从 excel 文件中加载数据
【发布时间】:2018-10-12 21:56:01
【问题描述】:

我想使用 Spark Session 2.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 在 com.crealytics.spark.excel.ExcelRelation.com$crealytics$spark$excel$ExcelRelation$$getExcerpt(ExcelRelation.scala:81) 在 com.crealytics.spark.excel.ExcelRelation$$anonfun$inferSchema$1.apply(ExcelRelation.scala:27​​0) 在 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)

【问题讨论】:

    标签: java excel apache-spark hdfs spark-excel


    【解决方案1】:

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

    当您发现冲突的依赖项(缺少 Workbook.close() 方法的依赖项)时,您可以将其从导入中排除。

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

    【讨论】:

      【解决方案2】:

      问题是:对于spark-excel,它只支持scala。
      所以如果你想使用这个依赖,你可以将你的scala代码编译成.jar包,然后在你的java项目中使用这个包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多