В настоящее время я работаю над проектом в Spark 2.1.0, и мне нужно импортировать библиотеку, от которой уже зависит сама Spark. В частности, я хочу org.roaringbitmap:RoaringBitmap:0.7.42
заменить org.roaringbitmap:RoaringBitmap:0.5.11
(библиотека, от которой зависят org.apache.spark:spark-core_2.11:2.1.0.cloudera1
и org.apache.spark:spark-sql_2.11:2.1.0.cloudera1
).
Мои зависимости в build.gradle
следующие
dependencies {
compile 'org.apache.spark:spark-core_2.11:2.1.0.cloudera1'
runtime ('org.apache.spark:spark-core_2.11:2.1.0.cloudera1') {
exclude group: 'org.roaringbitmap'
}
compile 'org.apache.spark:spark-sql_2.11:2.1.0.cloudera1'
runtime ('org.apache.spark:spark-sql_2.11:2.1.0.cloudera1') {
exclude group: 'org.roaringbitmap'
}
compile 'org.roaringbitmap:RoaringBitmap:0.7.42'
implementation 'org.roaringbitmap:RoaringBitmap'
constraints {
implementation('org.roaringbitmap:RoaringBitmap:0.7.42') {
because 'because of transitive dependency'
}
}
}
Вывод gradle -q dependencyInsight --dependency org.roaringbitmap
показывает, что зависимость была обновлена
org.roaringbitmap:RoaringBitmap -> 0.7.42
variant "default+runtime" [
org.gradle.status = release (not requested)
Requested attributes not found in the selected variant:
org.gradle.usage = java-api
]
\--- compileClasspath
org.roaringbitmap:RoaringBitmap:0.5.11 -> 0.7.42
variant "default+runtime" [
org.gradle.status = release (not requested)
Requested attributes not found in the selected variant:
org.gradle.usage = java-api
]
\--- org.apache.spark:spark-core_2.11:2.1.0.cloudera1
+--- compileClasspath
+--- org.apache.spark:spark-sql_2.11:2.1.0.cloudera1
| \--- compileClasspath
\--- org.apache.spark:spark-catalyst_2.11:2.1.0.cloudera1
\--- org.apache.spark:spark-sql_2.11:2.1.0.cloudera1 (*)
К сожалению, когда я запускаю свое приложение с spark2-submit
, фактическая версия зависимости времени выполнения - org.roaringbitmap:RoaringBitmap:0.5.11
.
Как заставить мое приложение использовать нужную версию RoaringBitmap?