Skip to content

Commit f5a7537

Browse files
authored
Spark: Initial support for 3.2 (#3335)
1 parent 84b7d05 commit f5a7537

File tree

329 files changed

+58148
-15
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

329 files changed

+58148
-15
lines changed

.github/workflows/spark-ci.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,30 @@ jobs:
9898
name: test logs
9999
path: |
100100
**/build/testlogs
101+
102+
spark-32-tests:
103+
runs-on: ubuntu-latest
104+
strategy:
105+
matrix:
106+
jvm: [8, 11]
107+
spark: ['3.2']
108+
env:
109+
SPARK_LOCAL_IP: localhost
110+
steps:
111+
- uses: actions/checkout@v2
112+
- uses: actions/setup-java@v1
113+
with:
114+
java-version: ${{ matrix.jvm }}
115+
- uses: actions/cache@v2
116+
with:
117+
path: ~/.gradle/caches
118+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
119+
restore-keys: ${{ runner.os }}-gradle
120+
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
121+
- run: ./gradlew -DsparkVersions=${{ matrix.spark }} -DhiveVersions= -DflinkVersions= :iceberg-spark:iceberg-spark-3.2:check :iceberg-spark:iceberg-spark-3.2-extensions:check :iceberg-spark:iceberg-spark-3.2-runtime:check -Pquick=true -x javadoc
122+
- uses: actions/upload-artifact@v2
123+
if: failure()
124+
with:
125+
name: test logs
126+
path: |
127+
**/build/testlogs

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ spark/v2.4/spark2/benchmark/*
3030
!spark/v2.4/spark2/benchmark/.gitkeep
3131
spark/v3.0/spark3/benchmark/*
3232
!spark/v3.0/spark3/benchmark/.gitkeep
33+
spark/v3.2/spark/benchmark/*
34+
!spark/v3.2/spark/benchmark/.gitkeep
3335

3436
__pycache__/
3537
*.py[cod]

build.gradle

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,6 @@ allprojects {
6464
mavenCentral()
6565
mavenLocal()
6666
}
67-
project.ext {
68-
Spark30Version = '3.0.3'
69-
Spark31Version = '3.1.1'
70-
}
7167
}
7268

7369
subprojects {
@@ -92,12 +88,6 @@ subprojects {
9288
exclude group: 'com.sun.jersey'
9389
exclude group: 'com.sun.jersey.contribs'
9490
exclude group: 'org.pentaho', module: 'pentaho-aggdesigner-algorithm'
95-
96-
resolutionStrategy {
97-
force 'com.fasterxml.jackson.module:jackson-module-scala_2.11:2.11.4'
98-
force 'com.fasterxml.jackson.module:jackson-module-scala_2.12:2.11.4'
99-
force 'com.fasterxml.jackson.module:jackson-module-paranamer:2.11.4'
100-
}
10191
}
10292

10393
testArtifacts

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ systemProp.defaultFlinkVersions=1.13
1919
systemProp.knownFlinkVersions=1.13
2020
systemProp.defaultHiveVersions=2,3
2121
systemProp.knownHiveVersions=2,3
22-
systemProp.defaultSparkVersions=2.4,3.0
23-
systemProp.knownSparkVersions=2.4,3.0
22+
systemProp.defaultSparkVersions=2.4,3.0,3.2
23+
systemProp.knownSparkVersions=2.4,3.0,3.2
2424
org.gradle.parallel=true
2525
org.gradle.jvmargs=-Xmx768m

jmh.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ if (sparkVersions.contains("3.0")) {
3232
jmhProjects.add(project(":iceberg-spark:iceberg-spark3"))
3333
}
3434

35+
if (sparkVersions.contains("3.2")) {
36+
jmhProjects.add(project(":iceberg-spark:iceberg-spark-3.2"))
37+
}
38+
3539
configure(jmhProjects) {
3640
apply plugin: 'me.champeau.gradle.jmh'
3741

settings.gradle

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,18 @@ if (sparkVersions.contains("3.0")) {
9191
project(':iceberg-spark:spark3-runtime').name = 'iceberg-spark3-runtime'
9292
}
9393

94+
if (sparkVersions.contains("3.2")) {
95+
include ':iceberg-spark:spark-3.2'
96+
include ':iceberg-spark:spark-3.2-extensions'
97+
include ':iceberg-spark:spark-3.2-runtime'
98+
project(':iceberg-spark:spark-3.2').projectDir = file('spark/v3.2/spark')
99+
project(':iceberg-spark:spark-3.2').name = 'iceberg-spark-3.2'
100+
project(':iceberg-spark:spark-3.2-extensions').projectDir = file('spark/v3.2/spark-extensions')
101+
project(':iceberg-spark:spark-3.2-extensions').name = 'iceberg-spark-3.2-extensions'
102+
project(':iceberg-spark:spark-3.2-runtime').projectDir = file('spark/v3.2/spark-runtime')
103+
project(':iceberg-spark:spark-3.2-runtime').name = 'iceberg-spark-3.2-runtime'
104+
}
105+
94106
// hive 3 depends on hive 2, so always add hive 2 if hive3 is enabled
95107
if (hiveVersions.contains("2") || hiveVersions.contains("3")) {
96108
include 'mr'

spark/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@ if (jdkVersion == '8' && sparkVersions.contains("2.4")) {
2727
if (sparkVersions.contains("3.0")) {
2828
apply from: file("$projectDir/v3.0/build.gradle")
2929
}
30+
31+
if (sparkVersions.contains("3.2")) {
32+
apply from: file("$projectDir/v3.2/build.gradle")
33+
}

spark/v2.4/build.gradle

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@ if (jdkVersion != '8') {
2121
throw new GradleException("Spark 2.4 must be built with Java 8")
2222
}
2323

24+
def sparkProjects = [
25+
project(':iceberg-spark:iceberg-spark2'),
26+
project(':iceberg-spark:iceberg-spark-runtime')
27+
]
28+
29+
configure(sparkProjects) {
30+
configurations {
31+
all {
32+
resolutionStrategy {
33+
force 'com.fasterxml.jackson.module:jackson-module-scala_2.11:2.11.4'
34+
force 'com.fasterxml.jackson.module:jackson-module-paranamer:2.11.4'
35+
}
36+
}
37+
}
38+
}
39+
2440
project(':iceberg-spark:iceberg-spark2') {
2541
configurations.all {
2642
resolutionStrategy {

spark/v3.0/build.gradle

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,27 @@
1717
* under the License.
1818
*/
1919

20+
def sparkProjects = [
21+
project(':iceberg-spark:iceberg-spark3'),
22+
project(":iceberg-spark:iceberg-spark3-extensions"),
23+
project(':iceberg-spark:iceberg-spark3-runtime')
24+
]
25+
26+
configure(sparkProjects) {
27+
project.ext {
28+
sparkVersion = '3.0.3'
29+
}
30+
31+
configurations {
32+
all {
33+
resolutionStrategy {
34+
force 'com.fasterxml.jackson.module:jackson-module-scala_2.12:2.11.4'
35+
force 'com.fasterxml.jackson.module:jackson-module-paranamer:2.11.4'
36+
}
37+
}
38+
}
39+
}
40+
2041
project(':iceberg-spark:iceberg-spark3') {
2142
apply plugin: 'scala'
2243

@@ -40,7 +61,7 @@ project(':iceberg-spark:iceberg-spark3') {
4061

4162
compileOnly "com.google.errorprone:error_prone_annotations"
4263
compileOnly "org.apache.avro:avro"
43-
compileOnly("org.apache.spark:spark-hive_2.12:${project.ext.Spark30Version}") {
64+
compileOnly("org.apache.spark:spark-hive_2.12:${sparkVersion}") {
4465
exclude group: 'org.apache.avro', module: 'avro'
4566
exclude group: 'org.apache.arrow'
4667
}
@@ -109,7 +130,7 @@ project(":iceberg-spark:iceberg-spark3-extensions") {
109130
compileOnly project(':iceberg-spark')
110131
compileOnly project(':iceberg-spark:iceberg-spark3')
111132
compileOnly project(':iceberg-hive-metastore')
112-
compileOnly("org.apache.spark:spark-hive_2.12:${project.ext.Spark30Version}") {
133+
compileOnly("org.apache.spark:spark-hive_2.12:${sparkVersion}") {
113134
exclude group: 'org.apache.avro', module: 'avro'
114135
exclude group: 'org.apache.arrow'
115136
}
@@ -176,7 +197,7 @@ project(':iceberg-spark:iceberg-spark3-runtime') {
176197
exclude group: 'com.google.code.findbugs', module: 'jsr305'
177198
}
178199

179-
integrationImplementation "org.apache.spark:spark-hive_2.12:${project.ext.Spark30Version}"
200+
integrationImplementation "org.apache.spark:spark-hive_2.12:${sparkVersion}"
180201
integrationImplementation 'org.junit.vintage:junit-vintage-engine'
181202
integrationImplementation 'org.slf4j:slf4j-simple'
182203
integrationImplementation project(path: ':iceberg-api', configuration: 'testArtifacts')

0 commit comments

Comments
 (0)