Skip to content

Conversation

@openinx
Copy link
Member

@openinx openinx commented Feb 22, 2022

Refer to the #4157 (comment)

@rdblue
Copy link
Contributor

rdblue commented Feb 22, 2022

Should we revert #4157 if we aren't publishing artifacts that are specific to a Scala version? Looks like the main benefit of multi-version is testing? Are any of the Scala-specific artifacts included in transitive dependencies?

@kbendick
Copy link
Contributor

Jumping in to say that Flink 1.15 will not have Scala on the user's classpath, so there won't be a 2.11 / 2.12 version (or any specific Scala version) coming from upstream after that.

@openinx
Copy link
Member Author

openinx commented Feb 23, 2022

@kbendick The flink community are pushing the scala-free work forward ( I mean the downstream users don't need to specific a scala version when they introduce a flink dependency, the flink is trying to create few dynamic class loader to load the existing flink modules implemented or depended on scala-lang ).

Currently, I see the flink-runtime is scala-free since 1.14.0[1] , and flink-table-* is scala-free since 1.15.0 ( Not release yet) [2]. In the best case for flink 1.15.0, all user required flink module will be scala-free. So we can say the iceberg-flink modules will don't need to bundle any scala version (introduced from flink artifacts) definitely.

[1] https://issues.apache.org/jira/browse/FLINK-14105
[2] https://issues.apache.org/jira/browse/FLINK-24427

@openinx
Copy link
Member Author

openinx commented Feb 23, 2022

@rdblue We iceberg flink 1.14 module indeed include scala related artifact in its transitive dependencies set, see the following:

➜  iceberg git:(revert-the-flink-scala-suffix) ./gradlew :iceberg-flink:iceberg-flink-1.14:dependencies  --configuration compileClasspath       

> Task :iceberg-flink:iceberg-flink-1.14:dependencies

------------------------------------------------------------
Project ':iceberg-flink:iceberg-flink-1.14'
------------------------------------------------------------

compileClasspath - Compile classpath for source set 'main'.
+--- project :iceberg-api
+--- project :iceberg-data
|    \--- project :iceberg-api
+--- org.apache.flink:flink-streaming-java_2.12:1.14.0
|    +--- org.apache.flink:flink-core:1.14.0
|    |    +--- org.apache.flink:flink-annotations:1.14.0
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.apache.flink:flink-metrics-core:1.14.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.apache.flink:flink-shaded-asm-7:7.1-14.0
|    |    +--- org.apache.commons:commons-lang3:3.3.2 -> 3.12.0
|    |    +--- com.esotericsoftware.kryo:kryo:2.24.0
|    |    |    +--- com.esotericsoftware.minlog:minlog:1.2
|    |    |    \--- org.objenesis:objenesis:2.1
|    |    +--- commons-collections:commons-collections:3.2.2
|    |    +--- org.apache.commons:commons-compress:1.21
|    |    +--- org.apache.flink:flink-shaded-guava:30.1.1-jre-14.0
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-file-sink-common:1.14.0
|    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-runtime:1.14.0
|    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    +--- org.apache.flink:flink-rpc-core:1.14.0
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.apache.flink:flink-rpc-akka-loader:1.14.0
|    |    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    |    +--- org.apache.flink:flink-rpc-core:1.14.0 (*)
|    |    |    +--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    \--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    +--- org.apache.flink:flink-java:1.14.0
|    |    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    |    +--- org.apache.commons:commons-lang3:3.3.2 -> 3.12.0
|    |    |    +--- org.apache.commons:commons-math3:3.5
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.apache.flink:flink-queryable-state-client-java:1.14.0
|    |    |    +--- org.apache.flink:flink-shaded-netty:4.1.65.Final-14.0
|    |    |    +--- org.apache.flink:flink-shaded-guava:30.1.1-jre-14.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.apache.flink:flink-hadoop-fs:1.14.0
|    |    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- commons-io:commons-io:2.8.0
|    |    +--- org.apache.flink:flink-shaded-netty:4.1.65.Final-14.0
|    |    +--- org.apache.flink:flink-shaded-guava:30.1.1-jre-14.0
|    |    +--- org.apache.flink:flink-shaded-jackson:2.12.4-14.0
|    |    +--- org.apache.flink:flink-shaded-zookeeper-3:3.4.14-14.0
|    |    +--- org.apache.commons:commons-lang3:3.3.2 -> 3.12.0
|    |    +--- commons-cli:commons-cli:1.3.1
|    |    +--- org.javassist:javassist:3.24.0-GA
|    |    +--- org.xerial.snappy:snappy-java:1.1.8.3
|    |    +--- org.lz4:lz4-java:1.8.0
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-scala_2.12:1.14.0
|    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    +--- org.apache.flink:flink-java:1.14.0 (*)
|    |    +--- org.apache.flink:flink-shaded-asm-7:7.1-14.0
|    |    +--- org.scala-lang:scala-reflect:2.12.7
|    |    |    \--- org.scala-lang:scala-library:2.12.7
|    |    +--- org.scala-lang:scala-library:2.12.7
|    |    +--- org.scala-lang:scala-compiler:2.12.7
|    |    |    +--- org.scala-lang:scala-library:2.12.7
|    |    |    +--- org.scala-lang:scala-reflect:2.12.7 (*)
|    |    |    \--- org.scala-lang.modules:scala-xml_2.12:1.0.6
|    |    |         \--- org.scala-lang:scala-library:2.12.0 -> 2.12.7
|    |    +--- com.twitter:chill_2.12:0.7.6
|    |    |    \--- com.twitter:chill-java:0.7.6
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-java:1.14.0 (*)
|    +--- org.apache.flink:flink-shaded-guava:30.1.1-jre-14.0
|    +--- org.apache.commons:commons-math3:3.5
|    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    \--- org.apache.flink:flink-shaded-force-shading:14.0
+--- org.apache.flink:flink-table-api-java-bridge_2.12:1.14.0
|    +--- org.apache.flink:flink-table-api-java:1.14.0
|    |    +--- org.apache.flink:flink-table-common:1.14.0
|    |    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    |    +--- org.apache.flink:flink-connector-files:1.14.0
|    |    |    |    +--- org.apache.flink:flink-file-sink-common:1.14.0 (*)
|    |    |    |    +--- org.apache.flink:flink-connector-base:1.14.0
|    |    |    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    |    +--- org.apache.flink:flink-shaded-asm-7:7.1-14.0
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-java:1.14.0 (*)
|    +--- org.apache.flink:flink-streaming-java_2.12:1.14.0 (*)
|    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    \--- org.apache.flink:flink-shaded-force-shading:14.0
+--- org.apache.flink:flink-table-planner_2.12:1.14.0
|    +--- org.apache.flink:flink-table-common:1.14.0 (*)
|    +--- org.apache.flink:flink-table-api-java:1.14.0 (*)
|    +--- org.apache.flink:flink-table-api-scala_2.12:1.14.0
|    |    +--- org.apache.flink:flink-table-common:1.14.0 (*)
|    |    +--- org.apache.flink:flink-table-api-java:1.14.0 (*)
|    |    +--- org.scala-lang:scala-reflect:2.12.7 (*)
|    |    +--- org.scala-lang:scala-library:2.12.7
|    |    +--- org.scala-lang:scala-compiler:2.12.7 (*)
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-table-api-java-bridge_2.12:1.14.0 (*)
|    +--- org.apache.flink:flink-table-api-scala-bridge_2.12:1.14.0
|    |    +--- org.apache.flink:flink-table-api-scala_2.12:1.14.0 (*)
|    |    +--- org.apache.flink:flink-scala_2.12:1.14.0 (*)
|    |    +--- org.apache.flink:flink-streaming-scala_2.12:1.14.0
|    |    |    +--- org.apache.flink:flink-streaming-java_2.12:1.14.0 (*)
|    |    |    +--- org.apache.flink:flink-scala_2.12:1.14.0 (*)
|    |    |    +--- org.scala-lang:scala-reflect:2.12.7 (*)
|    |    |    +--- org.scala-lang:scala-library:2.12.7
|    |    |    +--- org.scala-lang:scala-compiler:2.12.7 (*)
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.apache.flink:flink-table-runtime_2.12:1.14.0
|    |    +--- org.apache.flink:flink-table-common:1.14.0 (*)
|    |    +--- org.apache.flink:flink-table-api-java:1.14.0 (*)
|    |    +--- org.apache.flink:flink-table-api-java-bridge_2.12:1.14.0 (*)
|    |    +--- org.apache.flink:flink-table-code-splitter:1.14.0
|    |    |    +--- org.apache.flink:flink-core:1.14.0 (*)
|    |    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    |    +--- org.codehaus.janino:janino:3.0.11
|    |    |    \--- org.codehaus.janino:commons-compiler:3.0.11
|    |    +--- org.apache.calcite.avatica:avatica-core:1.17.0
|    |    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    |    \--- org.apache.flink:flink-shaded-force-shading:14.0
|    +--- org.slf4j:slf4j-api:1.7.15 -> 1.7.33
|    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0
|    \--- org.apache.flink:flink-shaded-force-shading:14.0
+--- org.apache.hadoop:hadoop-hdfs -> 2.7.3
|    +--- commons-cli:commons-cli:1.2 -> 1.3.1
|    +--- commons-codec:commons-codec:1.4 -> 1.6
|    +--- commons-io:commons-io:2.4 -> 2.8.0
|    +--- commons-lang:commons-lang:2.6
|    +--- commons-logging:commons-logging:1.1.3
|    +--- commons-daemon:commons-daemon:1.0.13
|    +--- log4j:log4j:1.2.17
|    +--- com.google.protobuf:protobuf-java:2.5.0
|    +--- javax.servlet:servlet-api:2.5
|    +--- org.codehaus.jackson:jackson-core-asl:1.9.13
|    +--- org.codehaus.jackson:jackson-mapper-asl:1.9.13
|    |    \--- org.codehaus.jackson:jackson-core-asl:1.9.13
|    +--- xmlenc:xmlenc:0.52
|    +--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
|    +--- io.netty:netty-all:4.0.23.Final
|    +--- xerces:xercesImpl:2.9.1
|    |    \--- xml-apis:xml-apis:1.3.04
|    +--- org.apache.htrace:htrace-core:3.1.0-incubating
|    \--- org.fusesource.leveldbjni:leveldbjni-all:1.8
+--- org.apache.hadoop:hadoop-common -> 2.7.3
|    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    +--- commons-cli:commons-cli:1.2 -> 1.3.1
|    +--- org.apache.commons:commons-math3:3.1.1 -> 3.5
|    +--- xmlenc:xmlenc:0.52
|    +--- commons-httpclient:commons-httpclient:3.1
|    |    +--- commons-logging:commons-logging:1.0.4 -> 1.1.3
|    |    \--- commons-codec:commons-codec:1.2 -> 1.6
|    +--- commons-codec:commons-codec:1.4 -> 1.6
|    +--- commons-io:commons-io:2.4 -> 2.8.0
|    +--- commons-net:commons-net:3.1
|    +--- commons-collections:commons-collections:3.2.2
|    +--- javax.servlet:servlet-api:2.5
|    +--- commons-logging:commons-logging:1.1.3
|    +--- log4j:log4j:1.2.17
|    +--- net.java.dev.jets3t:jets3t:0.9.0
|    |    +--- commons-codec:commons-codec:1.4 -> 1.6
|    |    +--- commons-logging:commons-logging:1.1.1 -> 1.1.3
|    |    +--- org.apache.httpcomponents:httpclient:4.1.2 -> 4.2.5
|    |    |    +--- org.apache.httpcomponents:httpcore:4.2.4
|    |    |    +--- commons-logging:commons-logging:1.1.1 -> 1.1.3
|    |    |    \--- commons-codec:commons-codec:1.6
|    |    +--- org.apache.httpcomponents:httpcore:4.1.2 -> 4.2.4
|    |    \--- com.jamesmurty.utils:java-xmlbuilder:0.4
|    +--- commons-lang:commons-lang:2.6
|    +--- commons-configuration:commons-configuration:1.6
|    |    +--- commons-collections:commons-collections:3.2.1 -> 3.2.2
|    |    +--- commons-lang:commons-lang:2.4 -> 2.6
|    |    +--- commons-logging:commons-logging:1.1.1 -> 1.1.3
|    |    +--- commons-digester:commons-digester:1.8
|    |    |    +--- commons-beanutils:commons-beanutils:1.7.0
|    |    |    |    \--- commons-logging:commons-logging:1.0.3 -> 1.1.3
|    |    |    \--- commons-logging:commons-logging:1.1 -> 1.1.3
|    |    \--- commons-beanutils:commons-beanutils-core:1.8.0
|    |         \--- commons-logging:commons-logging:1.1.1 -> 1.1.3
|    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    +--- org.codehaus.jackson:jackson-core-asl:1.9.13
|    +--- org.codehaus.jackson:jackson-mapper-asl:1.9.13 (*)
|    +--- org.apache.avro:avro:1.7.4 -> 1.10.1
|    |    +--- com.fasterxml.jackson.core:jackson-core:2.11.3
|    |    +--- com.fasterxml.jackson.core:jackson-databind:2.11.3
|    |    |    +--- com.fasterxml.jackson.core:jackson-annotations:2.11.3
|    |    |    \--- com.fasterxml.jackson.core:jackson-core:2.11.3
|    |    +--- org.apache.commons:commons-compress:1.20 -> 1.21
|    |    \--- org.slf4j:slf4j-api:1.7.30 -> 1.7.33
|    +--- com.google.protobuf:protobuf-java:2.5.0
|    +--- com.google.code.gson:gson:2.2.4
|    +--- org.apache.hadoop:hadoop-auth:2.7.3
|    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    +--- commons-codec:commons-codec:1.4 -> 1.6
|    |    +--- org.apache.httpcomponents:httpclient:4.2.5 (*)
|    |    +--- org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15
|    |    |    +--- org.apache.directory.server:apacheds-i18n:2.0.0-M15
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.5 -> 1.7.33
|    |    |    +--- org.apache.directory.api:api-asn1-api:1.0.0-M20
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.5 -> 1.7.33
|    |    |    +--- org.apache.directory.api:api-util:1.0.0-M20
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.5 -> 1.7.33
|    |    |    \--- org.slf4j:slf4j-api:1.7.5 -> 1.7.33
|    |    +--- org.apache.zookeeper:zookeeper:3.4.6
|    |    |    +--- org.slf4j:slf4j-api:1.6.1 -> 1.7.33
|    |    |    +--- log4j:log4j:1.2.16 -> 1.2.17
|    |    |    +--- jline:jline:0.9.94
|    |    |    |    \--- junit:junit:3.8.1
|    |    |    \--- io.netty:netty:3.7.0.Final
|    |    \--- org.apache.curator:curator-framework:2.7.1
|    |         +--- org.apache.curator:curator-client:2.7.1
|    |         |    +--- org.slf4j:slf4j-api:1.7.6 -> 1.7.33
|    |         |    \--- org.apache.zookeeper:zookeeper:3.4.6 (*)
|    |         \--- org.apache.zookeeper:zookeeper:3.4.6 (*)
|    +--- com.jcraft:jsch:0.1.42
|    +--- org.apache.curator:curator-client:2.7.1 (*)
|    +--- org.apache.curator:curator-recipes:2.7.1
|    |    +--- org.apache.curator:curator-framework:2.7.1 (*)
|    |    \--- org.apache.zookeeper:zookeeper:3.4.6 (*)
|    +--- com.google.code.findbugs:jsr305:3.0.0
|    +--- org.apache.htrace:htrace-core:3.1.0-incubating
|    +--- org.apache.zookeeper:zookeeper:3.4.6 (*)
|    \--- org.apache.commons:commons-compress:1.4.1 -> 1.21
+--- org.apache.hadoop:hadoop-minicluster -> 2.7.3
|    +--- org.apache.hadoop:hadoop-common:2.7.3 (*)
|    +--- org.apache.hadoop:hadoop-hdfs:2.7.3 (*)
|    +--- org.apache.hadoop:hadoop-yarn-server-tests:2.7.3
|    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3
|    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3
|    |    |    |    +--- commons-lang:commons-lang:2.6
|    |    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    |    \--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    |    |    +--- javax.xml.bind:jaxb-api:2.2.2
|    |    |    |    |    +--- javax.xml.stream:stax-api:1.0-2
|    |    |    |    |    \--- javax.activation:activation:1.1
|    |    |    |    +--- org.apache.commons:commons-compress:1.4.1 -> 1.21
|    |    |    |    +--- commons-lang:commons-lang:2.6
|    |    |    |    +--- javax.servlet:servlet-api:2.5
|    |    |    |    +--- commons-codec:commons-codec:1.4 -> 1.6
|    |    |    |    +--- org.codehaus.jackson:jackson-core-asl:1.9.13
|    |    |    |    +--- org.codehaus.jackson:jackson-mapper-asl:1.9.13 (*)
|    |    |    |    +--- org.codehaus.jackson:jackson-jaxrs:1.9.13
|    |    |    |    |    +--- org.codehaus.jackson:jackson-core-asl:1.9.13
|    |    |    |    |    \--- org.codehaus.jackson:jackson-mapper-asl:1.9.13 (*)
|    |    |    |    +--- org.codehaus.jackson:jackson-xc:1.9.13
|    |    |    |    |    +--- org.codehaus.jackson:jackson-core-asl:1.9.13
|    |    |    |    |    \--- org.codehaus.jackson:jackson-mapper-asl:1.9.13 (*)
|    |    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    |    +--- commons-cli:commons-cli:1.2 -> 1.3.1
|    |    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    |    +--- com.google.inject.extensions:guice-servlet:3.0
|    |    |    |    |    \--- com.google.inject:guice:3.0
|    |    |    |    |         +--- javax.inject:javax.inject:1
|    |    |    |    |         +--- aopalliance:aopalliance:1.0
|    |    |    |    |         \--- org.sonatype.sisu.inject:cglib:2.2.1-v20090111
|    |    |    |    |              \--- asm:asm:3.1
|    |    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    |    +--- commons-io:commons-io:2.4 -> 2.8.0
|    |    |    |    +--- com.google.inject:guice:3.0 (*)
|    |    |    |    \--- log4j:log4j:1.2.17
|    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    +--- org.apache.zookeeper:zookeeper:3.4.6 (*)
|    |    |    \--- org.fusesource.leveldbjni:leveldbjni-all:1.8
|    |    +--- org.apache.hadoop:hadoop-yarn-server-nodemanager:2.7.3
|    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    |    +--- javax.xml.bind:jaxb-api:2.2.2 (*)
|    |    |    +--- org.codehaus.jettison:jettison:1.1
|    |    |    +--- commons-lang:commons-lang:2.6
|    |    |    +--- javax.servlet:servlet-api:2.5
|    |    |    +--- commons-codec:commons-codec:1.4 -> 1.6
|    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    +--- com.google.inject:guice:3.0 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3 (*)
|    |    |    \--- org.fusesource.leveldbjni:leveldbjni-all:1.8
|    |    +--- org.apache.hadoop:hadoop-yarn-server-resourcemanager:2.7.3
|    |    |    +--- javax.servlet:servlet-api:2.5
|    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    +--- commons-io:commons-io:2.4 -> 2.8.0
|    |    |    +--- com.google.inject:guice:3.0 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    |    +--- javax.xml.bind:jaxb-api:2.2.2 (*)
|    |    |    +--- org.codehaus.jettison:jettison:1.1
|    |    |    +--- commons-lang:commons-lang:2.6
|    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    +--- log4j:log4j:1.2.17
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:2.7.3
|    |    |    |    +--- javax.servlet:servlet-api:2.5
|    |    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    |    +--- com.google.inject:guice:3.0 (*)
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    |    |    +--- javax.xml.bind:jaxb-api:2.2.2 (*)
|    |    |    |    +--- org.codehaus.jettison:jettison:1.1
|    |    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3 (*)
|    |    |    |    +--- commons-collections:commons-collections:3.2.2
|    |    |    |    \--- org.fusesource.leveldbjni:leveldbjni-all:1.8
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-web-proxy:2.7.3
|    |    |    |    +--- javax.servlet:servlet-api:2.5
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3 (*)
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    |    |    \--- commons-logging:commons-logging:1.1.3
|    |    |    +--- org.apache.zookeeper:zookeeper:3.4.6 (*)
|    |    |    \--- org.fusesource.leveldbjni:leveldbjni-all:1.8
|    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    \--- commons-logging:commons-logging:1.1.3
|    +--- org.apache.hadoop:hadoop-mapreduce-client-jobclient:2.7.3
|    |    +--- org.apache.hadoop:hadoop-mapreduce-client-common:2.7.3
|    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-client:2.7.3
|    |    |    |    +--- commons-logging:commons-logging:1.1.3
|    |    |    |    +--- commons-lang:commons-lang:2.6
|    |    |    |    +--- commons-cli:commons-cli:1.2 -> 1.3.1
|    |    |    |    +--- log4j:log4j:1.2.17
|    |    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    |    |    |    \--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-mapreduce-client-core:2.7.3
|    |    |    |    +--- org.apache.hadoop:hadoop-yarn-common:2.7.3 (*)
|    |    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    |    |    \--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3 (*)
|    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    |    \--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
|    |    +--- org.apache.hadoop:hadoop-mapreduce-client-shuffle:2.7.3
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-common:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-yarn-server-nodemanager:2.7.3 (*)
|    |    |    +--- org.apache.hadoop:hadoop-mapreduce-client-common:2.7.3 (*)
|    |    |    +--- org.fusesource.leveldbjni:leveldbjni-all:1.8
|    |    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    |    \--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
|    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    \--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
|    +--- org.apache.hadoop:hadoop-mapreduce-client-app:2.7.3
|    |    +--- org.apache.hadoop:hadoop-mapreduce-client-common:2.7.3 (*)
|    |    +--- org.apache.hadoop:hadoop-yarn-server-web-proxy:2.7.3 (*)
|    |    +--- org.apache.hadoop:hadoop-mapreduce-client-shuffle:2.7.3 (*)
|    |    +--- com.google.protobuf:protobuf-java:2.5.0
|    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|    |    +--- org.apache.hadoop:hadoop-annotations:2.7.3
|    |    +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|    |    \--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
|    +--- org.apache.hadoop:hadoop-yarn-api:2.7.3 (*)
|    +--- org.apache.hadoop:hadoop-mapreduce-client-core:2.7.3 (*)
|    \--- org.apache.hadoop:hadoop-mapreduce-client-hs:2.7.3
|         +--- org.apache.hadoop:hadoop-hdfs:2.7.3 (*)
|         +--- org.apache.hadoop:hadoop-mapreduce-client-common:2.7.3 (*)
|         +--- org.apache.hadoop:hadoop-mapreduce-client-app:2.7.3 (*)
|         +--- org.fusesource.leveldbjni:leveldbjni-all:1.8
|         +--- com.google.protobuf:protobuf-java:2.5.0
|         +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.33
|         +--- org.apache.hadoop:hadoop-annotations:2.7.3
|         +--- com.google.inject.extensions:guice-servlet:3.0 (*)
|         \--- io.netty:netty:3.6.2.Final -> 3.7.0.Final
+--- org.apache.avro:avro -> 1.10.1 (*)
+--- org.slf4j:slf4j-api -> 1.7.33
+--- com.github.stephenc.findbugs:findbugs-annotations -> 1.3.9-1
+--- project :iceberg-bundled-guava
+--- project :iceberg-common
+--- project :iceberg-core
|    \--- project :iceberg-api
+--- project :iceberg-orc
|    \--- project :iceberg-api
+--- project :iceberg-parquet
|    \--- project :iceberg-api
+--- project :iceberg-hive-metastore
|    \--- project :iceberg-api
+--- org.apache.parquet:parquet-avro -> 1.12.2
|    +--- org.apache.parquet:parquet-column:1.12.2
|    |    +--- org.apache.parquet:parquet-common:1.12.2
|    |    |    +--- org.apache.parquet:parquet-format-structures:1.12.2
|    |    |    |    +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.33
|    |    |    |    \--- javax.annotation:javax.annotation-api:1.3.2
|    |    |    +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.33
|    |    |    \--- org.apache.yetus:audience-annotations:0.12.0
|    |    \--- org.apache.parquet:parquet-encoding:1.12.2
|    |         \--- org.apache.parquet:parquet-common:1.12.2 (*)
|    +--- org.apache.parquet:parquet-hadoop:1.12.2
|    |    +--- org.apache.parquet:parquet-column:1.12.2 (*)
|    |    +--- org.apache.parquet:parquet-format-structures:1.12.2 (*)
|    |    +--- org.apache.parquet:parquet-jackson:1.12.2
|    |    +--- org.xerial.snappy:snappy-java:1.1.8 -> 1.1.8.3
|    |    +--- commons-pool:commons-pool:1.6
|    |    \--- com.github.luben:zstd-jni:1.4.9-1
|    \--- org.apache.parquet:parquet-format-structures:1.12.2 (*)
\--- org.apache.orc:orc-core -> 1.7.3
     +--- org.apache.orc:orc-shims:1.7.3
     |    \--- org.slf4j:slf4j-api:1.7.33
     +--- org.apache.commons:commons-lang3:3.12.0
     +--- io.airlift:aircompressor:0.21
     +--- org.jetbrains:annotations:17.0.0
     +--- org.slf4j:slf4j-api:1.7.33
     \--- org.threeten:threeten-extra:1.5.0

(*) - dependencies omitted (listed previously)

A web-based, searchable dependency report is available by adding the --scan option.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.4/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 7s
1 actionable task: 1 executed

But in fact we iceberg flink modules don't add any scala code in iceberg-flink-1.14 and iceberg-flink-runtime-1.14 artifact packages, and we don't interact with any scala specific flink API. So the flink artifacts deployed from our apache iceberg side, then we don't need to deploy any scala specific jars to the maven repository.

Should we revert #4157 if we aren't publishing artifacts that are specific to a Scala version? Looks like the main benefit of multi-version is testing?

I don't think we need to revert #4157 because we made the Scala version of Flink dependency dynamically configurable in the command line. This is very helpful for validating flink releases with different Scala versions, and indeed it also helps a lot for us to add scala versioned travis CI for flink integration.

@openinx
Copy link
Member Author

openinx commented Feb 23, 2022

The failing unit test is still the flakey testHashDistributionMode, which will be resolved fundamentally in this PR #4189

org.apache.iceberg.flink.TestFlinkTableSink > testHashDistributeMode[catalogName=testhive, baseNamespace=, format=PARQUET, isStreaming=true] FAILED
    java.lang.AssertionError: There should be 1 data file in partition 'aaa' expected:<1> but was:<2>
        at org.junit.Assert.fail(Assert.java:89)
        at org.junit.Assert.failNotEquals(Assert.java:835)
        at org.junit.Assert.assertEquals(Assert.java:647)
        at org.apache.iceberg.flink.TestFlinkTableSink.testHashDistributeMode(TestFlinkTableSink.java:283)

Let's get this re-run again.

@openinx openinx closed this Feb 23, 2022
@openinx openinx reopened this Feb 23, 2022
@rdblue
Copy link
Contributor

rdblue commented Feb 23, 2022

If I understand correctly, the idea here is that because this is binary compatible using Flink's Java API, we don't need to care about what version of Scala was used in the Flink artifact.

I don't think that I agree because if you rely on the Iceberg Flink Jar, it could transitively pull in flink-scala_2.12.

I think that the runtime Jar could be published without the Scala suffix since it has no transitive dependencies. Or we could remove the transitive dependency and remove the Scala version suffix from all the Jars. But I don't think that Iceberg should public a Jar that has no Scala 2.12 suffix, but then pulls in a Scala 2.12 library.

@openinx
Copy link
Member Author

openinx commented Feb 24, 2022

If I understand correctly, the idea here is that because this is binary compatible using Flink's Java API, we don't need to care about what version of Scala was used in the Flink artifact.

Correct.

I don't think that I agree because if you rely on the Iceberg Flink Jar, it could transitively pull in flink-scala_2.12.

It won't pull in any flink scala artifact actually because all of the flink related artifacts are introduced as compileOnly in the build.gradle. People will need to add their own flink scala jars ( with scala 2.12 or scala 2.11). So, I think our iceberg-flink artifact without scala version doesn't bring its scala transitive jar and cause user confusion.

Or we could remove the transitive dependency and remove the Scala version suffix from all the Jars.

It's definitely the correction approach for our next flink 1.15, but not possible for flink 1.14 currently. As this #4193 (comment) said, flink 1.15 will remove all the scala version for all the user required artifacts, but flink 1.14 only clean part of the artifacts to remove scala version. Although we iceberg-flink modue introduce the flink artifact with scala versions, but it not require the iceberg flink modules to attach the scala version because the iceberg-flink module does not use any scala code or depends on scala-related APIs, nor does it introduce transitive flink scala dependencies.

@rdblue
Copy link
Contributor

rdblue commented Feb 25, 2022

Okay, if there is no Scala 2.12 dependency in the runtime or implementation classpath, then I'm fine removing these.

@openinx
Copy link
Member Author

openinx commented Feb 26, 2022

Thanks @rdblue and @kbendick for the double checking. I will plan to get this merged. Thanks.

@openinx openinx merged commit 7ce8f84 into apache:master Feb 26, 2022
@openinx openinx deleted the revert-the-flink-scala-suffix branch February 26, 2022 01:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants