问题描述: 在使用 AWS EMR/Spark 的过程中,可能会遇到一种错误,即 Hikari NoSuchMethodError 错误。这种错误通常是由于库之间的版本兼容性问题引起的。具体地说,这是由于 Spark 的版本与 HikariCP 的版本不兼容导致的,因为 Spark 默认使用的 Hikari 版本过低。
解决方案: 为了解决这个问题,我们需要手动升级 AWS EMR 上 Spark 依赖的 HikariCP 版本。以下是具体的步骤:
spark-submit --version
a. 打开以下目录:/usr/lib/spark/jars/
b. 将所有带有 HikariCP 字样的 JAR 文件从该目录中删除。
c. 从 HikariCP 官方网站(https://github.com/brettwooldridge/HikariCP)下载与 Spark 版本兼容的最新 HikariCP JAR 文件。
d. 将下载后的 HikariCP JAR 文件上传到 /usr/lib/spark/jars/ 目录下。
以下是一个例子,演示了如何通过 Gradle 在 Spark 项目中手动指定 HikariCP 版本:
build.gradle 文件:
dependencies { compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.4.4' compile group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.