我可以使用常规的Spark Core应用程序库与DSE Spark交谈吗?

时间:2015-11-18 14:37:56

标签: datastax-enterprise

几天前,我们从DSE 4.6升级到DSE 4.7。我们正在从Java运行Spark作业,所以我将spark-core_2.10 Maven依赖从0.9.1升级到1.2.2,以支持DSE捆绑的新的Spark 1.2.2。但是,当我现在提交作业以掌握日志时

ERROR [sparkMaster-akka.actor.default-dispatcher-2] 2015-11-17 17:50:42,442  Slf4jLogger.scala:66 - org.apache.spark.deploy.ApplicationDescription; local class incompatible: stream classdesc serialVersionUID = 7674242335164700840, local class serialVersionUID = 2812534333379744973
java.io.InvalidClassException: org.apache.spark.deploy.ApplicationDescription; local class incompatible: stream classdesc serialVersionUID = 7674242335164700840, local class serialVersionUID = 2812534333379744973
[...]

(请参阅此处的完整例外:https://gist.github.com/JensRantil/371d00701ff7f2021d7d

进一步深入研究,结果是DSE附带了spark-core_2.10-1.2.2.2.jar

  1. 不是AFAIK在Interwebz上作为Maven人工制品发布的。
  2. 未标记为https://github.com/apache/spark中的GIT存储库中已发布。
  3. 使用与serialVersionUID org.apache.spark.deploy.ApplicationDescription spark-core_2.10-1.2.2.jar不同的1.2.2运送<{1}}。我已使用serialver验证了这一点。
  4. 问题: Datastax Java Spark documentation从未提及有关导入Spark Core的任何内容。 我是否可以在DSE中使用标准的Spark Java Maven工件?

    Additionals:

    • 我已将dse.jar添加到类路径中,这不是问题。
    • Datastax Java Spark documentation未说明要使用的Spark代码版本。请参阅相关的What do I need to import to make `SparkConf` resolvable?
    • ApplicationDescription类未固定其serialVersionUID。对ApplicationDescription.class1.2.2的{​​{1}}进行反编译,看起来它们都使用相同数量的字段但具有不同的方法,这会导致1.2.2.2以不同方式生成。一个潜在的上游DSE修复方法是简单地将serialVersionUID固定为serialVersionUID
    • 有点相关;为了使事情变得更加复杂,我们重新打包7674242335164700840以遮蔽破坏我们应用程序的包。但是,即使我们没有spark-core_2.10-1.2.2.jar的源代码,我们也可以使用Maven shade plugin

0 个答案:

没有答案