水曜日, 1月 13, 2016

Spark - JDBC経由でデータを取得

以下の例はSparkJDBCを使ってRDB(ここではMySQL. MySQLは使いやすくていいね!)からデータを取得しJDBCRDDを構築する.

import java.sql.{ResultSet, DriverManager}

import org.apache.spark.rdd.JdbcRDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by neko32 on 2016/01/13.
  */
object MySQLSpark {

  def getConn() = {
   Class.forName("com.mysql.jdbc.Driver").newInstance
    DriverManager.getConnection("jdbc:mysql://localhost/neko32?user=takoneko888&password=XXXX")
}
  def main(args:Array[String]):Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("MySql")
    val sc = new SparkContext(conf)

    val data = new JdbcRDD(sc, getConn, "select * from test where id >= ? and id <= ?",
                            upperBound = 2,
                            lowerBound = 1,
                            numPartitions = 1,
                            mapRow = (r:ResultSet) => (r.getInt("id"), r.getString("name")))
    println(data.collect.toList)

  }
}

0 件のコメント: