LoginSignup
0
1

More than 5 years have passed since last update.

Spark (-shell) からPostgreSQL にアクセスしてみる

Last updated at Posted at 2018-07-30

Sparkの対話式シェル Spark-shellからPostgreSQLにアクセスして少し触ってみる手順を、覚書的に纏めました。

実行環境は次の通りです。なお、PostgreSQLのインストール、Setup手順は省略しています。

・CentOS 7.5
・PostgreSQL 9.2.23
・Apache Spark 2.3.1

Apache Spark

各種データストア(Hadoop/Cassandra/RDB)からのデータの取り出し、加工、受渡しをインメモリで行うOSSのフレームワーク

Apache Sparkのインストール

こちらを参考に、Java環境のインストール

yum search openjdk
yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel

Apache SparkのInstall

wget http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz 
tar zxvf spark-1.6.1-bin-hadoop2.6.tgz -C /usr/local/lib/

ln -s /usr/local/lib/spark-2.3.1-bin-hadoop2.7 /usr/local/lib/spark

環境変数の設定とSpark-shellの起動確認

vi /etc/profile.d/spark.sh
export SPARK_HOME=/usr/local/lib/spark
export PATH=$SPARK_HOME/bin:$PATH

source /etc/profile
spark-shell --version

Spark.JPG

JDBCドライバのインストール

yum -y install postgresql-jdbc
find / -name postgre*.jar

spark-shellからPostgreSQLへのアクセス 

対話式シェルの起動とCLASSPATH指定

spark-shell --driver-class-path=/usr/share/java/postgresql-jdbc.jar 

例)PostgreSQL mydbのpublic.account表のデータをロードする

val jdbcDF = spark.read.format("jdbc").option("url", "jdbc:postgresql://localhost:5432/mydb").option("dbtable", "public.account").option("user", "postgres").load()
jdbcDF.filter(jdbcDF("id")<10).show()

Scala_1.JPG

例)public.account表のデータをpublic.account_bk表にコピー(追加)する

val prop = new java.util.Properties
prop.setProperty("driver", "org.postgresql.Driver")
prop.setProperty("user", "postgres")
prop.setProperty("password", "postgres") 
jdbcDF.write.mode("append").jdbc("jdbc:postgresql://localhost:5432/mydb", "public.account_bk", prop)

val jdbcDF1 = spark.read.format("jdbc").option("url", "jdbc:postgresql://localhost:5432/mydb").option("dbtable", "public.account_bk").option("user", "postgres").load()
jdbcDF1.show()

public.account表のデータがpublic.account_bk表に複製された
Scala_2.JPG

Spark-shellの終了

scala>Press (Ctrl+D)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1