Azure Synapse中PySpark读Excel报spark-excel错误如何修复
问题根因
报错由Scala版本二进制不兼容导致:
你安装的spark-excel_2.11包是基于Scala 2.11编译的,但Azure Synapse当前运行的Spark集群默认搭载Scala 2.12环境,跨Scala大版本的编译包不存在二进制兼容性,运行时找不到对应Scala核心方法就会抛出你看到的NoSuchMethodError,问题和代码写法、包安装路径无关,纯粹是依赖版本选错了。
修复步骤
- 先卸载之前安装的0.13.7版本
spark-excel_2.11包,避免多版本依赖冲突。 - 在工作区Maven依赖管理中选择适配Scala 2.12版本的spark-excel包安装,包坐标为
com.crealytics:spark-excel_2.12,版本选择0.14.0及以上稳定版即可,不要选名称带_2.11后缀的包。 - 依赖安装完成后必须重启当前Spark会话,新安装的包才会被加载生效。
- 你原来的读取代码不需要做任何修改,会话重启后直接运行即可正常读取Excel:
df=spark.read.format("com.crealytics.spark.excel").option("header", "true").option("inferSchema", "true").load(xlContestSourcePath)
补充说明:只有当你使用已经停服的Spark 2.4旧版本运行时时,才需要选择
_2.11后缀的spark-excel包,目前Synapse默认提供的所有Spark 3.x版本池均适配Scala 2.12,选_2.12后缀的包即可。
内容的提问来源于stack exchange,提问作者jacky789
相关产品推荐
相关产品推荐

