Spark 1.3 Пример работы с базой(postgresql) с помощью sparkSQL
Ниже приведён код инициализации соединения и выбора данных с базы данных. После инициализации мы получаем dataFrame:
Также возможен альтернативный способ работы с базой через DriveManager:
При необходимости обращаться с 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 может отличаться.
Полезные ссылки:
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 может отличаться.
Полезные ссылки:
Коментарі
Дописати коментар