[英]How can I connect to a MySQL database into Apache Spark using SparkR?
[英]How can I connect to a MySQL database using Scala?
我正在開發一個小項目,我想解析一些數據,然后把它放到數據庫中。 我沒有使用Lift,我也找不到標准的方法來做到這一點。
我自己編寫查詢很好,但我不確定用什么來實際連接到數據庫。
您可以使用JDBC - 使Java與數據庫通信的標准方法。 您需要適當的MySQL JDBC驅動程序。 Apache DbUtils提供了一些圍繞JDBC的實用程序類,並且非常有用。
如果你想要一個更高級別的API,它需要一些樣板,那么請查看Spring的JDBC集成 。
如果你想要一個ORM(對象關系映射),那么Hibernate是一個不錯的選擇。
我已成功使用Scala中的所有三個。
當然,您可以使用與JDBC兼容的所有Java版本(Hibernate,Spring等),但為了更好地使用Scala語言,我建議使用具有更好DSL的Scala特定框架。
有關這些框架的更多信息, 請訪問https://stackoverflow.com/questions/1362748/looking-for-a-comparison-of-scala-persistence-frameworks
我實際上在Scala中編寫了一個SQL命令shell ,它與任何存在JDBC驅動程序的任意數據庫進行通信。 正如Brian Agnew所說,它完美無缺。 此外,還有像Querulous , SQueryL和OR / Broker這樣的工具可以提供Scala友好的數據庫層。 它們位於JDBC之上,但它們提供了一些額外的語義(在某些情況下通過DSL)以使您更容易。
嘗試O / R經紀人 :
case class MyObj(name: String, year: Int)
val ds = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource
// set properties on ds
import org.orbroker._
val builder = new BrokerBuilder(ds)
val broker = builder.build
val myObj: MyObj = // Parse stuff to create MyObj instance
broker.transaction() { session =>
session.execute("INSERT INTO MYTABLE VALUES(:obj.name, :obj.year)", "obj"->myObj)s
}
val myObjs: Seq[MyObj] = // Parse stuff to create sequence of MyObj instances
broker.transaction() { session =>
session.executeBatch("INSERT INTO MYTABLE VALUES(:obj.name, :obj.year)", "obj"->myObjs)
}
為了完整性,還可以查看RichSQL 。 它的演示代碼展示了如何包裝JDBC以進行更多類似Scala的操作,但它實際上非常有用。 它具有簡單和小巧的優點,因此您可以輕松地研究源,看看發生了什么。 不要忘記關閉()您的PreparedStatements。
我剛剛發現了ScalikeJDBC,它為JDBC提供了類似Scala的API包裝器 。
(我發現ScalikeJDBC研究如何使用時ScalaAnorm 無間隙框架 。現在看來,我不會需要ANORM為我的項目。)
這是一個簡單的例子,雖然它提供了許多未在此處顯示的有趣功能:
import scalikejdbc._
Class.forName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource")
ConnectionPool.singleton("jdbc:mysql://localhost:3306/myschema", "user", "password")
DB.localTx { implicit conn =>
val data = sql"select mystringcol, myintcolumn from mytable".map {
rs => (rs.string("mystringcol"), rs.int("myintcolumn"))
}.list().apply()
println(data)
}
一些文檔鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.