Spark 1.3 Пример работы с базой(postgresql) с помощью sparkSQL

Ниже приведён код инициализации соединения и выбора данных с базы данных. После инициализации мы получаем dataFrame:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
val jdbcDF = sqlContext.load("jdbc", Map("url" -> "jdbc:postgresql://127.0.0.1:5432/yourdb?user=dbuser&password=userpassword", "dbtable" -> "public_chema.table_name"))

val data_by_channel_id = jdbcDF.filter(jdbcDF("channel_id") === 265)
data_by_channel_id.show()

Также возможен альтернативный способ работы с базой через DriveManager:
import java.util.Properties
import org.apache.spark._
import org.apache.spark.sql.SQLContext
import java.sql.Connection
import java.sql.DriverManager

val url = "jdbc:postgresql://127.0.0.1:5432/dbname"
var conn: java.sql.Connection = null
val properties = new Properties()
properties.setProperty("user", "username")
properties.setProperty("password", "userpassword")
properties.setProperty("rowId", "false")
conn = DriverManager.getConnection(url, properties)
val statement = conn.createStatement()

val resultSet = statement.executeQuery("SELECT * FROM public_chema.table_name WHERE channel_id=265")

resultSet.next()

println("data from subchannle_id: 265: " + resultSet.getString(1))

statement.executeQuery("UPDATE public_chema.users_registered_agg SET count = count +1 WHERE channel_id=265")

")

При необходимости обращаться с Spark приложений к базе данных postgresql может возникнуть следующая ошибка: "...java.sql.SQLException: No suitable driver found for jdbc:postgresql ..."

Проблема тут в том, что собранный jar spark приложения не знает где находиться jar файл для обработки соединений с базой данный postgresql. Вроде эту проблему исправили в Spark 1.5, но владельцами Spark 1.3 необходимо добавить следующие строки к команде spark-shell или spark-submit: "spark-shell --master "local[2]" --driver-class-path /home/cloudera/parcels/CDH-5.4.8-1.cdh5.4.8.p0.4/jars/postgresql-9.1-901.jdbc4.jar". Путь к файлу jar может отличаться.

Полезные ссылки:

Коментарі

Популярні дописи з цього блогу

Минимальные требование для кластера Hadoop(with Spark)

Apache Spark - основные команды

Apache Spark Resource Management и модель приложений от YARN