Я пытаюсь подключить postgresql и спарк на Intellij. Однако я получаю ошибку object read is not a member of package org.apache.spark
, хотя я включил драйвер JDBC в свой build.sbt.
Я пытаюсь следовать этому уроку https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html и вот мой код scala:
import org.apache.spark
object DBConn {
def main(args: Array[String]): Unit = {
// Note: JDBC loading and saving can be achieved via either the load/save or jdbc methods
// Loading data from a JDBC source
val jdbcDF = spark.read
.format("jdbc")
.option("url", "jdbc:postgresql://host/db")
.option("dbtable", "chroniker_log")
.option("user", "username")
.option("password", "password")
.load()
val connectionProperties = new Properties()
connectionProperties.put("user", "username")
connectionProperties.put("password", "password")
val jdbcDF2 = spark.read
.jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties)
// Specifying the custom data types of the read schema
connectionProperties.put("customSchema", "id DECIMAL(38, 0), name STRING")
val jdbcDF3 = spark.read
.jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties)
}
}
build.sbt:
name := "DBConnect"
version := "0.1"
scalaVersion := "2.11.12"
val sparkVersion = "2.4.3"
resolvers ++= Seq(
"apache-snapshots" at "http://repository.apache.org/snapshots/"
)
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.postgresql" % "postgresql" % "42.2.5"
)
Я попытался упростить проблему, запустив spark-shell на консоли. Однако следующая команда также выдает то же предупреждение:
spark-shell --driver-class-path postgresql-42.2.5.jar --jars postgresql-42-2.5.jar -i src/main/scala/DBC
onn.scala
Интересно, когда я попал в spark-shell после сбоя вышеуказанного кода, он начинает распознавать spark.read
и успешно подключается к базе данных.