Как создать одиночную банку в scala со сборкой sbt на AWS EMR? Выполняется дедупликация: различное содержимое файла обнаружено в следующих областях: ошибки - PullRequest
1 голос
/ 29 мая 2020

Я нахожусь в кластере AWS EMR. Я только что встал, у меня есть файл scala, который скомпилирован, и тот, который я хотел бы встроить в сборку. Однако, когда я запускаю сборку sbt, я сталкиваюсь с ошибками дедупликации.

Per https://medium.com/@tedherman / compile- scala -on-emr-cb77610559f0 Первоначально у меня была ссылка на символ c для моей библиотеки usr lib spark jars;

ln -s /usr/lib/spark/jars lib

хотя я заметил, что мой код передает sbt-компиляцию с этим или без него. Однако я не понимаю, почему и как разрешать ошибки дублирования сборки sbt. Я также отмечу, что я устанавливаю sbt в действиях bootstrap согласно статье.

С помощью ссылки symboli c в

Некоторые дедупликации кажутся четкие точные обманы; пример:

[error] deduplicate: different file contents found in the following:
[error] /home/hadoop/.ivy2/cache/org.apache.parquet/parquet-jackson/jars/parquet-jackson-1.10.1.jar:shaded/parquet/org/codehaus/jackson/util/CharTypes.class
[error] /usr/lib/spark/jars/parquet-jackson-1.10.1-spark-amzn-1.jar:shaded/parquet/org/codehaus/jackson/util/CharTypes.class

Другие, кажется, конкурирующие версии;

[error] deduplicate: different file contents found in the following:
[error] /home/hadoop/.ivy2/cache/org.apache.spark/spark-core_2.11/jars/spark-core_2.11-2.4.3.jar:org/spark_project/jetty/util/MultiPartOutputStream.class
[error] /usr/lib/spark/jars/spark-core_2.11-2.4.5-amzn-0.jar:org/spark_project/jetty/util/MultiPartOutputStream.class

Я не понимаю, почему существуют конкурирующие версии; или если они по умолчанию такие, или я сделал что-то, чтобы их представить.

Без символа c ссылка

Я подумал, что если бы я удалил это, я бы меньше проблем; хотя у меня все еще есть дубли (только меньше);

[error] deduplicate: different file contents found in the following:
[error] /home/hadoop/.ivy2/cache/org.apache.hadoop/hadoop-yarn-api/jars/hadoop-yarn-api-2.6.5.jar:org/apache/hadoop/yarn/factory/providers/package-info.class
[error] /home/hadoop/.ivy2/cache/org.apache.hadoop/hadoop-yarn-common/jars/hadoop-yarn-common-2.6.5.jar:org/apache/hadoop/yarn/factory/providers/package-info.class

Я не понимаю, почему вышеизложенное является обманом, учитывая, что у одного есть oop -yarn-api-2.6.5.jar, а другой имеет oop -yarn-common-2.6.5.jar. Разные имена, так почему же обман?

Другие кажутся версиями;

[error] deduplicate: different file contents found in the following:
[error] /home/hadoop/.ivy2/cache/javax.inject/javax.inject/jars/javax.inject-1.jar:javax/inject/Named.class
[error] /home/hadoop/.ivy2/cache/org.glassfish.hk2.external/javax.inject/jars/javax.inject-2.4.0-b34.jar:javax/inject/Named.class

У некоторых то же имя файла, но разные пути / jar-файлы ...

[error] deduplicate: different file contents found in the following:
[error] /home/hadoop/.ivy2/cache/org.apache.arrow/arrow-format/jars/arrow-format-0.10.0.jar:git.properties
[error] /home/hadoop/.ivy2/cache/org.apache.arrow/arrow-memory/jars/arrow-memory-0.10.0.jar:git.properties
[error] /home/hadoop/.ivy2/cache/org.apache.arrow/arrow-vector/jars/arrow-vector-0.10.0.jar:git.properties

То же самое с этими ...

[error] deduplicate: different file contents found in the following:
[error] /home/hadoop/.ivy2/cache/org.apache.spark/spark-catalyst_2.11/jars/spark-catalyst_2.11-2.4.3.jar:org/apache/spark/unused/UnusedStubClass.class
[error] /home/hadoop/.ivy2/cache/org.apache.spark/spark-core_2.11/jars/spark-core_2.11-2.4.3.jar:org/apache/spark/unused/UnusedStubClass.class
[error] /home/hadoop/.ivy2/cache/org.apache.spark/spark-graphx_2.11/jars/spark-graphx_2.11-2.4.3.jar:org/apache/spark/unused/UnusedStubClass.class

Для справки, некоторая другая информация

импортирует в мой scala объект

import org.apache.spark.sql.SparkSession
import java.time.LocalDateTime
import com.amazonaws.regions.Regions
import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder
import com.amazonaws.services.secretsmanager.model.GetSecretValueRequest
import org.json4s.{DefaultFormats, MappingException}
import org.json4s.jackson.JsonMethods._
import com.datarobot.prediction.spark.Predictors.{getPredictorFromServer, getPredictor}

Мой build.sbt

libraryDependencies ++= Seq(
  "net.snowflake" % "snowflake-jdbc" % "3.12.5",
  "net.snowflake" % "spark-snowflake_2.11" % "2.7.1-spark_2.4",
  "com.datarobot" % "scoring-code-spark-api_2.4.3" % "0.0.19",
  "com.datarobot" % "datarobot-prediction" % "2.1.4",
  "com.amazonaws" % "aws-java-sdk-secretsmanager" % "1.11.789",
  "software.amazon.awssdk" % "regions" % "2.13.23"
) 

Мысли? Пожалуйста, сообщите.

1 Ответ

3 голосов
/ 29 мая 2020

Вам потребуется mergeStrategy установка ( документы ).

"Случайный пример:"

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", _)       => MergeStrategy.discard
  case PathList("git.properties", _) => MergeStrategy.discard
  case "application.conf"            => MergeStrategy.concat
  case "reference.conf"              => MergeStrategy.concat
  case _                             => MergeStrategy.first
}
...