gpt4 book ai didi

scala - 包含 Spark Streaming Kinesis ASL 库时 Spark 作业 SBT 程序集合并冲突

转载 作者:行者123 更新时间:2023-12-02 19:21:47 26 4
gpt4 key购买 nike

我开始制作 Spark 流作业,并为 kinesis 端点找到了制作人。完成该工作后,我开始制作消费者,但在构建它时遇到了问题。

我正在使用程序集插件创建一个包含所有依赖项的 jar。该项目的依赖如下。

libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.4.1" % "provided",
"org.apache.spark" %% "spark-sql" % "1.4.1" % "provided",
"org.apache.spark" %% "spark-streaming" % "1.4.1" % "provided",
"org.apache.spark" %% "spark-streaming-kinesis-asl" % "1.4.1",
"org.scalatest" %% "scalatest" % "2.2.1" % "test",
"c3p0" % "c3p0" % "0.9.1.+",
"com.amazonaws" % "aws-java-sdk" % "1.10.4.1",
"mysql" % "mysql-connector-java" % "5.1.33",
"com.amazonaws" % "amazon-kinesis-client" % "1.5.0"

)

当我运行程序集时,文件可以编译,但在合并阶段失败并出现错误

[error] (streamingClicks/*:assembly) deduplicate: different file contents found in the following:
[error] /Users/adam/.ivy2/cache/org.apache.spark/spark-network-common_2.10/jars/spark-network-common_2.10-1.4.1.jar:META-INF/maven/com.google.guava/guava/pom.properties
[error] /Users/adam/.ivy2/cache/com.google.guava/guava/bundles/guava-18.0.jar:META-INF/maven/com.google.guava/guava/pom.properties

这是在添加 Spark-streaming-kinesis-asl 依赖项时引起的。我该如何解决这个问题?我可以将依赖项标记为所提供的,然后将 jar 添加到类路径中,但这实际上不是我想要做的事情。

最佳答案

我不知道你的情况的准确解决方案,但你必须使用merge strategy对于这些依赖项。可能是这样的:

lazy val strategy = assemblyMergeStrategy in assembly <<= (assemblyMergeStrategy in assembly) { (old) => {
case "application.conf" => MergeStrategy.concat
case meta(_) => MergeStrategy.discard
case x => MergeStrategy.first
}
}
lazy val core = (project in file("core")).
settings(
name := "core",
libraryDependencies ++= Seq(
...
),
strategy
)

附注我还建议将所有依赖项组装在一个“fatjar”项目中,并在依赖项目中提供代码。然后,您可以将 fatjar 放在 hdfs 上,并使用 sbt package 打包您的实际代码。要运行您的代码,您应该提供 fatjar 和带有 --jar 选项的包。

关于scala - 包含 Spark Streaming Kinesis ASL 库时 Spark 作业 SBT 程序集合并冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31485171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com