Skip to content

Commit 71f115a

Browse files
committed
now working with spark-connect and scala 2.13
1 parent 726edfd commit 71f115a

File tree

12 files changed

+73
-35
lines changed

12 files changed

+73
-35
lines changed

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
import org.gradle.jvm.toolchain.JavaLanguageVersion
2+
13
object Versions : Dsl<Versions> {
24
const val project = "2.0.0-SNAPSHOT"
35
const val kotlinSparkApiGradlePlugin = "2.0.0-SNAPSHOT"
46
const val groupID = "org.jetbrains.kotlinx.spark"
57
const val kotlin = "2.0.0-RC3"
6-
const val jvmTarget = "8"
8+
const val jvmTarget = "1.8"
9+
val jvmLanguageVersion = JavaLanguageVersion.of(8)
710
const val jupyterJvmTarget = "8"
811
inline val spark get() = System.getProperty("spark") as String
912
inline val scala get() = System.getProperty("scala") as String

compiler-plugin/build.gradle.kts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
12
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
23
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
34

@@ -74,13 +75,17 @@ tasks.withType<KotlinCompile>().configureEach {
7475

7576
kotlin {
7677
jvmToolchain {
77-
languageVersion = JavaLanguageVersion.of(8)
78+
languageVersion = Versions.jvmLanguageVersion
79+
}
80+
compilerOptions {
81+
jvmTarget = JvmTarget.fromTarget(Versions.jvmTarget)
7882
}
7983
}
8084
java {
8185
toolchain {
8286
languageVersion = JavaLanguageVersion.of(8)
8387
}
88+
targetCompatibility = JavaVersion.toVersion(Versions.jvmTarget)
8489
}
8590

8691
val generateTests by tasks.creating(JavaExec::class) {

examples/build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
22

33
plugins {
44
// Needs to be installed in the local maven repository or have the bootstrap jar on the classpath
@@ -49,8 +49,10 @@ dependencies {
4949
}
5050

5151
kotlin {
52-
jvmToolchain(8)
5352
jvmToolchain {
54-
languageVersion = JavaLanguageVersion.of(Versions.jvmTarget)
53+
languageVersion = Versions.jvmLanguageVersion
54+
}
55+
compilerOptions {
56+
jvmTarget = JvmTarget.fromTarget(Versions.jvmTarget)
5557
}
5658
}

gradle-plugin/build.gradle.kts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@file:Suppress("UnstableApiUsage")
22

3+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
4+
5+
36
plugins {
47
`java-gradle-plugin`
58
kotlin
@@ -51,7 +54,10 @@ dependencies {
5154

5255
kotlin {
5356
jvmToolchain {
54-
languageVersion = JavaLanguageVersion.of(Versions.jvmTarget)
57+
languageVersion = Versions.jvmLanguageVersion
58+
}
59+
compilerOptions {
60+
jvmTarget = JvmTarget.fromTarget(Versions.jvmTarget)
5561
}
5662
}
5763

gradle/bootstraps/compiler-plugin.jar

0 Bytes
Binary file not shown.

gradle/bootstraps/gradle-plugin.jar

0 Bytes
Binary file not shown.

kotlin-spark-api/build.gradle.kts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.igormaznitsa.jcp.gradle.JcpTask
44
import com.vanniktech.maven.publish.JavadocJar.Dokka
55
import com.vanniktech.maven.publish.KotlinJvm
66
import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask
7+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
78

89
plugins {
910
kotlin
@@ -66,6 +67,9 @@ dependencies {
6667
kafkaStreamsTestUtils,
6768
sparkMl,
6869
)
70+
71+
compileOnly(scalaLibrary)
72+
testCompileOnly(scalaLibrary)
6973
}
7074
}
7175

@@ -154,8 +158,11 @@ tasks.compileTestKotlin {
154158
}
155159

156160
kotlin {
161+
compilerOptions {
162+
jvmTarget = JvmTarget.fromTarget(Versions.jvmTarget)
163+
}
157164
jvmToolchain {
158-
languageVersion = JavaLanguageVersion.of(Versions.jvmTarget)
165+
languageVersion = Versions.jvmLanguageVersion
159166
}
160167
}
161168

kotlin-spark-api/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Encoding.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ import kotlin.reflect.jvm.javaGetter
7676
import kotlin.reflect.jvm.javaMethod
7777
import kotlin.reflect.jvm.jvmName
7878
import kotlin.reflect.typeOf
79+
import scala.collection.immutable.Seq as ImmutableSeq
7980

8081
fun <T : Any> kotlinEncoderFor(
8182
kClass: KClass<T>,
@@ -683,7 +684,7 @@ object KotlinTypeInference : Serializable {
683684

684685
JavaBeanEncoder<Any>(
685686
ClassTag.apply(jClass),
686-
fields.asScalaSeq(),
687+
fields.asScalaSeq() as ImmutableSeq<EncoderField>?,
687688
)
688689
}
689690
}

scala-helpers/build.gradle.kts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ repositories {
2121
dependencies {
2222

2323
Dependencies {
24-
api(
25-
scalaLibrary,
24+
implementation(
2625
reflect,
2726
)
2827

@@ -32,18 +31,20 @@ dependencies {
3231
implementation(
3332
// sparkSql, not needed atm
3433
)
34+
compileOnly(scalaLibrary)
35+
testCompileOnly(scalaLibrary)
3536
}
3637
}
3738

3839
java {
3940
toolchain {
4041
if (Versions.scalaCompat.toDouble() > 2.12) { // scala 2.12 will always target java 8
41-
languageVersion = JavaLanguageVersion.of(Versions.jvmTarget)
42-
42+
languageVersion = Versions.jvmLanguageVersion
4343
} else if (Versions.jvmTarget == "1.8" || Versions.jvmTarget == "8") {
4444
languageVersion = JavaLanguageVersion.of(8)
4545
}
4646
}
47+
targetCompatibility = JavaVersion.toVersion(Versions.jvmTarget)
4748
}
4849

4950
tasks.withType<ScalaCompile> {
@@ -54,9 +55,12 @@ tasks.withType<ScalaCompile> {
5455
}
5556
}
5657

57-
val scalaMainSources = sourceSets.main.get().scala.sourceDirectories
58+
val scalaMainSources =
59+
sourceSets.main
60+
.get()
61+
.scala.sourceDirectories
5862

59-
val preprocessMain by tasks.creating(JcpTask::class) {
63+
val preprocessMain by tasks.creating(JcpTask::class) {
6064
sources = scalaMainSources
6165
clearTarget = true
6266
fileExtensions = listOf("scala")
@@ -99,4 +103,4 @@ mavenPublishing {
99103
val skipScalaOnlyDependent = System.getProperty("skipScalaOnlyDependent").toBoolean()
100104
tasks
101105
.filter { "publish" in it.name }
102-
.forEach { it.onlyIf { !skipScalaOnlyDependent } }
106+
.forEach { it.onlyIf { !skipScalaOnlyDependent } }

scala-tuples-in-kotlin/build.gradle.kts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import com.vanniktech.maven.publish.JavadocJar.Dokka
44
import com.vanniktech.maven.publish.KotlinJvm
55
import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask
6-
import org.jetbrains.dokka.gradle.DokkaTask
7-
import org.jetbrains.dokka.gradle.DokkaTaskPartial
8-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
6+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
97

108
plugins {
119
scala
@@ -30,24 +28,26 @@ dependencies {
3028
Dependencies {
3129
implementation(
3230
kotlinStdLib,
33-
scalaLibrary,
3431
)
3532
testImplementation(
3633
kotest,
3734
atrium,
3835
kotlinTest,
3936
)
37+
compileOnly(scalaLibrary)
38+
testCompileOnly(scalaLibrary)
4039
}
4140
}
4241

43-
4442
kotlin {
4543
jvmToolchain {
46-
languageVersion = JavaLanguageVersion.of(Versions.jvmTarget)
44+
languageVersion = Versions.jvmLanguageVersion
45+
}
46+
compilerOptions {
47+
jvmTarget = JvmTarget.fromTarget(Versions.jvmTarget)
4748
}
4849
}
4950

50-
5151
tasks.withType<AbstractDokkaLeafTask> {
5252
dokkaSourceSets {
5353
all {

spark-connect-examples/build.gradle.kts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
id("org.jetbrains.kotlinx.spark.api")
66
kotlin("jvm")
77
application
8+
shadow
89
}
910

1011
// run with `./gradlew run`
@@ -44,21 +45,21 @@ dependencies {
4445
implementation(sparkConnectClient)
4546

4647
implementation(kotlinDateTime)
48+
49+
compileOnly(scalaLibrary)
4750
}
4851
}
4952

50-
// spark-connect seems to work well with java 17 as client and java 1.8 as server
51-
// also set gradle and your project sdk to java 17
5253
kotlin {
5354
jvmToolchain {
54-
languageVersion = JavaLanguageVersion.of(17)
55+
languageVersion = JavaLanguageVersion.of(17)//Versions.jvmLanguageVersion
5556
}
5657
compilerOptions {
57-
jvmTarget = JvmTarget.JVM_17
58+
jvmTarget = JvmTarget.fromTarget(Versions.jvmTarget)
5859
}
5960
}
6061

6162
tasks.withType<JavaCompile> {
62-
sourceCompatibility = JavaVersion.VERSION_17.toString()
63-
targetCompatibility = JavaVersion.VERSION_17.toString()
63+
sourceCompatibility = JavaVersion.VERSION_1_8.toString()
64+
targetCompatibility = JavaVersion.VERSION_1_8.toString()
6465
}

spark-connect-examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Main.kt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,39 @@ import org.jetbrains.kotlinx.spark.api.plugin.annotations.Sparkify
55
import org.jetbrains.kotlinx.spark.api.showDS
66
import org.jetbrains.kotlinx.spark.api.toList
77
import org.jetbrains.kotlinx.spark.api.tuples.X
8-
import org.jetbrains.kotlinx.spark.api.tuples.t
98
import org.jetbrains.kotlinx.spark.api.withSparkConnect
109
import scala.Tuple2
1110
import java.time.LocalDate
1211

13-
// run with `./gradlew run` or set VM options: "--add-opens=java.base/java.nio=ALL-UNNAMED" in the IDE
12+
// run with `./gradlew runShadow` or set VM options: "--add-opens=java.base/java.nio=ALL-UNNAMED" in the IDE
1413
fun main() =
1514
withSparkConnect("sc://localhost") {
1615
val classFinder = REPLClassDirMonitor("/mnt/data/Projects/kotlin-spark-api/spark-connect-examples/build/classes")
1716
spark.registerClassFinder(classFinder)
18-
spark.addArtifact("/mnt/data/Projects/kotlin-spark-api/spark-connect-examples/build/libs/spark-connect-examples-2.0.0-SNAPSHOT.jar")
17+
// make jar first, preferably a fat jar with shadow, but be careful it doesn't contain scala depencencies
18+
spark.addArtifact("/mnt/data/Projects/kotlin-spark-api/spark-connect-examples/build/libs/spark-connect-examples-2.0.0-SNAPSHOT-all.jar")
19+
1920

2021
val data =
2122
listOf(
2223
Person("Alice", 25, LocalDate.of(1996, 1, 1), "Alice" X Address("1 Main St", "Springfield", "IL", 62701)),
2324
Person("Bob", 30, LocalDate.of(1991, 1, 1), "Bob" X Address("2 Main St", "Springfield", "IL", 62701)),
24-
Person("Charlie", 35, LocalDate.of(1986, 1, 1), "Charlie" X Address("3 Main St", "Springfield", "IL", 62701)),
25+
Person(
26+
"Charlie",
27+
35,
28+
LocalDate.of(1986, 1, 1),
29+
"Charlie" X Address("3 Main St", "Springfield", "IL", 62701),
30+
),
2531
)
2632

2733
val ds = data.toDS().showDS()
2834

29-
ds.toList<Person>().forEach {
30-
println(it)
31-
}
35+
ds
36+
.filter { it.age > 26 }
37+
.toList<Person>()
38+
.forEach {
39+
println(it)
40+
}
3241
}
3342

3443
@Sparkify

0 commit comments

Comments
 (0)