Я немного поработал с Cassandra и сейчас пытаюсь настроить разъем spark и spark-cassandra. Я использую IntelliJ IDEA для этого (впервые с IntelliJ IDEA и Scala тоже) в Windows 10.
build.gradle
apply plugin: 'scala'
apply plugin: 'idea'
apply plugin: 'eclipse'
repositories {
mavenCentral()
flatDir {
dirs 'runtime libs'
}
}
idea {
project {
jdkName = '1.8'
languageLevel = '1.8'
}
}
dependencies {
compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.4.5'
compile group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.5'
compile group: 'org.scala-lang', name: 'scala-library', version: '2.11.12'
compile group: 'com.datastax.spark', name: 'spark-cassandra-connector_2.11', version: '2.5.0'
compile group: 'log4j', name: 'log4j', version: '1.2.17'
}
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:12.0.1'
}
}
compileScala.targetCompatibility = "1.8"
compileScala.sourceCompatibility = "1.8"
jar {
zip64 true
archiveName = "ModuleName.jar"
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Main-Class': 'org.module.ModuelName'
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
}
ModuleName. scala
package org.module
import org.apache.spark.sql.SparkSession
import com.datastax.spark.connector._
import org.apache.spark.sql.types.TimestampType
object SentinelSparkModule {
case class Document(id: Int, time: TimestampType, data: String)
def main(args: Array[String]) {
val spark = SparkSession.builder
.master("spark://192.168.0.3:7077")
.appName("App")
.config("spark.cassandra.connection.host", "127.0.0.1")
.config("spark.cassandra.connection.port", "9042")
.getOrCreate()
//I'm trying it without [Document] since it throws 'Failed to map constructor parameter id in
//org.module.ModuleName.Document to a column of keyspace.table'
val documentRDD = spark.sparkContext
.cassandraTable/*[Document]*/("keyspace", "table")
.select()
documentRDD.take(10).foreach(println)
spark.stop()
}
}
У меня есть работающий мастер зажигания на spark: //192.168.0.3: 7077 и работник этого мастера, но я не пробовал на submit
работу в виде скомпилированной фляги в консоли, я просто пытаюсь заставить ее работать в IDE.
Спасибо