Загрузка данных из файла Excel с помощью Spark Java Excel - PullRequest
0 голосов
/ 02 мая 2018

Я хочу загрузить данные из файла Excel в HDFS, используя Spark Session 2.2. Вот ниже мой 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: 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)

1 Ответ

0 голосов
/ 02 мая 2018

Это похоже на проблему зависимости. Убедитесь, что в вашем pom / sbt некоторые библиотеки не используют другую версию Apache POI. Вы можете сделать это, например, с помощью зависимости mvn: 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

...