在azuredatabricks中调整类路径/更改spring版本

uplii1fm  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(332)

我尝试在azuredatabricks中使用apachespark/ignite集成。我安装org.apache。ignite:ignite-spark-2.4:2.9.0使用databricks ui的maven库。我在访问ignite cahces时出错:

: java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.clearCache()V
        at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:907)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:567)

在这里 AbstractApplicationContext 编译时使用 ReflectionUtils 不同的Spring版本。
我看到spring-core-4.3.26.release.jar在org.apache运行期间安装在/dbfs/filestore/jars/maven/org/springframework中。ignite:ignite-spark-2.4:2.9.0安装,并且/dbfs/filestore/jars下没有其他spring版本jar
但databricks似乎在内部使用spring-core_uuu4.1.4。

%sh
ls /databricks/jars | grep spring

印刷品:

spark--maven-trees--spark_2.4--com.clearspring.analytics--stream--com.clearspring.analytics__stream__2.7.0.jar
spark--maven-trees--spark_2.4--org.springframework--spring-core--org.springframework__spring-core__4.1.4.RELEASE.jar
spark--maven-trees--spark_2.4--org.springframework--spring-test--org.springframework__spring-test__4.1.4.RELEASE.jar

我不是java程序员,所以我没有解决这种冲突的经验。
有没有可能以某种方式调整databricks类路径或以其他方式解决这个问题?
调整类路径可能很容易,但我不知道如何调整。我只是在databricks文档中看到一句话,可以在init脚本中更改类路径。我可以创建一个init脚本,以前也做过,但是我应该在里面做什么呢?
我尝试过不同的databricks运行时版本,目前我尝试使用6.6版本。我认为ApacheIgnite没有与Spark3集成。

mw3dktmi

mw3dktmi1#

跟随链接https://kb.databricks.com/libraries/replace-default-jar-new-jar.html 我创建的初始化脚本如下:

dbutils.fs.mkdirs("dbfs:/databricks/scripts/")
dbutils.fs.put("dbfs:/databricks/scripts/install_spring.sh",
"""
rm -rf /databricks/jars/spark--maven-trees--spark_2.4--com.h2database--h2--com.h2database__h2__1.3.174.jar
rm -rf /databricks/jars/spark--maven-trees--spark_2.4--org.springframework--spring-core--org.springframework__spring-core__4.1.4.RELEASE.jar
rm -rf /databricks/jars/spark--maven-trees--spark_2.4--org.springframework--spring-test--org.springframework__spring-test__4.1.4.RELEASE.jar
cp /dbfs/FileStore/jars/maven/com/h2database/h2-1.4.197.jar /databricks/jars/
cp /dbfs/FileStore/jars/maven/org/springframework/spring-core-4.3.26.RELEASE.jar /databricks/jars/
cp /dbfs/FileStore/jars/maven/org/springframework/spring-test-4.3.26.RELEASE.jar /databricks/jars/
""", True)

之后,我在集群上注册了这个init脚本,ignite集成为我工作(org.apache)。ignite:ignite-spark-2.4:2.9.0,ignite 2.9.0,azure databricks 6.6)
在/databricks/jars下预安装了大约500个jar文件,我可能已经破坏了一些依赖关系,但是没有注意到任务的一些副作用。

相关问题