こんにちは世界とロギング関連が終わったら次はDB回り。
いつSparkに手ェつけんだって話だけども、Sparkに渡したいデータ元がDBだからしょうがないんだよと言い訳しとこう。
■build.sbt
基本的に前回記事とかに追記してるものと思いねぇ。
"com.typesafe.slick" %% "slick" % "3.1.0-M2",
"com.typesafe.slick" %% "slick-codegen" % "3.1.0-M2",
"mysql" % "mysql-connector-java" % "5.1.34",
codegenはテーブル構成からmodelクラスにあたるものを作ってくれるのかね。
今回使わないけど今後の要件でなんか使いそうな気はするから入れておこう。
後で消すかもだけど
■scala
参考:http://www.mwsoft.jp/programming/scala/slick3_1.html
import slick.driver.MySQLDriver.api._
import scala.concurrent.Future
import scala.concurrent.Await
import scala.concurrent.duration.Duration
まずimportにこいつら追加。concurrentはとりあえず非同期処理やスレッド回りに関連する連中って理解。詳しくは後々もっとちゃんと追う。今回はとにかく動かす。
val db = Database.forURL("jdbc:mysql://localhost/scaladevdb", driver="com.mysql.jdbc.Driver", user="scala", password="scala")
val query = sql"SELECT id, name FROM test".as[(Int, String)]
val f:Future[Vector[(Int, String)]] = db.run(query)
Await.result(f, Duration.Inf) foreach println
※mysqlそのものの設定やらは準備は既に出来ている前提です
とりあえずこれでDBアクセスと結果吐き出しは出来た。
・Future、Await,Durationとはなんぞや
・Vector型ってなんぞや
・scalaのシンタックス(Await.resultの行)がまだぜんぜんわからん
課題やまづみ