Error when reading Excel file: "java.lang.NoClassDefFoundError: shadeio/poi/schemas/vmldrawing/XmlDocument"

Mado
Valued Contributor II

Hi,

I want to read an Excel file by:

filepath_xlsx = "dbfs:/FileStore/data.xlsx"
 
 
 
sampleDF = (spark.read.format("com.crealytics.spark.excel")
 
 .option("Header", "true") 
 
 .option("inferSchema", "false") 
 
 .option("treatEmptyValuesAsNulls", "false") 
 
 .load(filepath_xlsx)
 
      )

However, I get the error:

java.lang.NoClassDefFoundError: shadeio/poi/schemas/vmldrawing/XmlDocument
 
 
 
Py4JJavaError                             Traceback (most recent call last)
 
<command-3204971640072140> in <cell line: 2>()
 
      1 # Read excel file
 
----> 2 sample1DF = (spark.read.format("com.crealytics.spark.excel")
 
      3   .option("Header", "true")
 
      4   .option("inferSchema", "false")
 
      5   .option("treatEmptyValuesAsNulls", "false")
 
 
 
/databricks/spark/python/pyspark/instrumentation_utils.py in wrapper(*args, **kwargs)
 
     46             start = time.perf_counter()
 
     47             try:
 
---> 48                 res = func(*args, **kwargs)
 
     49                 logger.log_success(
 
     50                     module_name, class_name, function_name, time.perf_counter() - start, signature
 
 
 
/databricks/spark/python/pyspark/sql/readwriter.py in load(self, path, format, schema, **options)
 
    175         self.options(**options)
 
    176         if isinstance(path, str):
 
--> 177             return self._df(self._jreader.load(path))
 
    178         elif path is not None:
 
    179             if type(path) != list:
 
 
 
/databricks/spark/python/lib/py4j-0.10.9.5-src.zip/py4j/java_gateway.py in __call__(self, *args)
 
   1319 
 
   1320         answer = self.gateway_client.send_command(command)
 
-> 1321         return_value = get_return_value(
 
   1322             answer, self.gateway_client, self.target_id, self.name)
 
   1323 
 
 
 
/databricks/spark/python/pyspark/sql/utils.py in deco(*a, **kw)
 
    194     def deco(*a: Any, **kw: Any) -> Any:
 
    195         try:
 
--> 196             return f(*a, **kw)
 
    197         except Py4JJavaError as e:
 
    198             converted = convert_exception(e.java_exception)
 
 
 
/databricks/spark/python/lib/py4j-0.10.9.5-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
 
    324             value = OUTPUT_CONVERTER[type](answer[2:], gateway_client)
 
    325             if answer[1] == REFERENCE_TYPE:
 
--> 326                 raise Py4JJavaError(
 
    327                     "An error occurred while calling {0}{1}{2}.\n".
 
    328                     format(target_id, ".", name), value)
 
 
 
Py4JJavaError: An error occurred while calling o918.load.
 
: java.lang.NoClassDefFoundError: shadeio/poi/schemas/vmldrawing/XmlDocument
 
	at shadeio.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:135)
 
	at shadeio.poi.xssf.usermodel.XSSFVMLDrawing.<init>(XSSFVMLDrawing.java:123)
 
	at shadeio.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:61)
 
	at shadeio.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:661)
 
	at shadeio.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:678)
 
	at shadeio.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:165)
 
	at shadeio.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:274)
 
	at shadeio.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:118)
 
	at shadeio.poi.xssf.usermodel.XSSFWorkbookFactory.create(XSSFWorkbookFactory.java:98)
 
	at shadeio.poi.xssf.usermodel.XSSFWorkbookFactory.create(XSSFWorkbookFactory.java:36)
 
	at shadeio.poi.ss.usermodel.WorkbookFactory.lambda$create$2(WorkbookFactory.java:224)
 
	at shadeio.poi.ss.usermodel.WorkbookFactory.wp(WorkbookFactory.java:329)
 
	at shadeio.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:224)
 
	at shadeio.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:185)
 
	at com.crealytics.spark.excel.DefaultWorkbookReader.$anonfun$openWorkbook$1(WorkbookReader.scala:55)
 
	at scala.Option.fold(Option.scala:251)
 
	at com.crealytics.spark.excel.DefaultWorkbookReader.openWorkbook(WorkbookReader.scala:55)
 
	at com.crealytics.spark.excel.WorkbookReader.withWorkbook(WorkbookReader.scala:16)
 
	at com.crealytics.spark.excel.WorkbookReader.withWorkbook$(WorkbookReader.scala:15)
 
	at com.crealytics.spark.excel.DefaultWorkbookReader.withWorkbook(WorkbookReader.scala:50)
 
	at com.crealytics.spark.excel.ExcelRelation.excerpt$lzycompute(ExcelRelation.scala:32)
 
	at com.crealytics.spark.excel.ExcelRelation.excerpt(ExcelRelation.scala:32)
 
	at com.crealytics.spark.excel.ExcelRelation.headerColumns$lzycompute(ExcelRelation.scala:104)
 
	at com.crealytics.spark.excel.ExcelRelation.headerColumns(ExcelRelation.scala:103)
 
	at com.crealytics.spark.excel.ExcelRelation.$anonfun$inferSchema$1(ExcelRelation.scala:172)
 
	at scala.Option.getOrElse(Option.scala:189)
 
	at com.crealytics.spark.excel.ExcelRelation.inferSchema(ExcelRelation.scala:171)
 
	at com.crealytics.spark.excel.ExcelRelation.<init>(ExcelRelation.scala:36)
 
	at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:36)
 
	at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:13)
 
	at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:8)
 
	at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:385)
 
	at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:368)
 
	at org.apache.spark.sql.DataFrameReader.$anonfun$load$2(DataFrameReader.scala:324)
 
	at scala.Option.getOrElse(Option.scala:189)
 
	at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:324)
 
	at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:237)
 
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 
	at java.lang.reflect.Method.invoke(Method.java:498)
 
	at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
 
	at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:380)
 
	at py4j.Gateway.invoke(Gateway.java:306)
 
	at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
 
	at py4j.commands.CallCommand.execute(CallCommand.java:79)
 
	at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:195)
 
	at py4j.ClientServerConnection.run(ClientServerConnection.java:115)
 
	at java.lang.Thread.run(Thread.java:750)

I installed "com.crealytics:spark-excel_2.12:3.2.1_0.16.4" on the cluster following this thread. Still getting error.

Environment:

  • Single node cluster
  • 11.2 ML (includes Apache Spark 3.3.0, Scala 2.12)

Any idea to solve this issue?