开发者社区> 问答> 正文

有没有办法了解spark如何加载类路径以及以何种顺序加载?

我正试图在EMR上运行一个带有自定义spark作业,并试图在驱动程序的额外类路径中使用自定义jar

spark.driver.extraClassPath /usr/lib/hadoop/lib/hadoop-lzo.jar:/usr/local/java/avro-1.8.2.jar:/usr/local/java/avro-mapred-1.8.2-hadoop2.jar
但不知何故,它仍然加载默认的avro jar(旧1.7.4),我通过类路径verbose选项找到了它

[Loaded org.apache.avro.generic.GenericContainer from file:/usr/lib/hadoop/lib/avro-1.7.4.jar]
我想了解类路径加载的顺序和优先级。为什么它仍然选择旧的通用hadoop avro 1.7.4而不加载我想要使用的那个。

有没有办法看到为spark提交运行加载的确切类路径顺序,任何jvm选项等都会有所帮助。

简单地说类路径的顺序(顺序,首先,我的客户jar与spark jar与hadoop jar)

展开
收起
社区小助手 2018-12-21 13:55:10 4440 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    在运行时,如果具有相同完全限定名称(package + classname)的两个类驻留在类路径(库或直接类)中,则类加载器可以以特定于当前类加载器的方式从一个或另一个jar加载类。加载类。
    因此,在类路径中有两个版本的同一个库显然是要避免的:avro-1.8.2.jar和avro-1.7.4.jar。
    该spark.driver.extraClassPath选项将不会改变其JVM的工作方式。它只是:

    额外的类路径条目,前置于驱动程序的类路径。

    简而言之:更改类路径值以仅指定所需的版本。

    2019-07-17 23:23:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载