首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Apache Spark与MySQL集成,将数据库表作为spark数据帧读取?

如何将Apache Spark与MySQL集成,将数据库表作为spark数据帧读取?
EN

Stack Overflow用户
提问于 2014-12-31 16:33:30
回答 6查看 90K关注 0票数 37

我想用Apache Spark和MySQL来运行我现有的应用程序。

EN

回答 6

Stack Overflow用户

发布于 2015-11-03 18:24:57

在pySpark中,它适用于我:

代码语言:javascript
复制
dataframe_mysql = mySqlContext.read.format("jdbc").options(
    url="jdbc:mysql://localhost:3306/my_bd_name",
    driver = "com.mysql.jdbc.Driver",
    dbtable = "my_tablename",
    user="root",
    password="root").load()
票数 43
EN

Stack Overflow用户

发布于 2016-12-14 00:12:54

在spark 2.0.x中,您可以使用DataFrameReader和DataFrameWriter。使用SparkSession.read访问DataFrameReader,使用Dataset.write访问DataFrameWriter。

假设使用spark-shell。

阅读示例

代码语言:javascript
复制
val prop=new java.util.Properties()
prop.put("user","username")
prop.put("password","yourpassword")
val url="jdbc:mysql://host:port/db_name"

val df=spark.read.jdbc(url,"table_name",prop) 
df.show()

阅读示例2

代码语言:javascript
复制
val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:mysql:dbserver")
  .option("dbtable", "schema.tablename")
  .option("user", "username")
  .option("password", "password")
  .load()

来自spark doc

阅读example3

如果要从查询结果而不是从表中读取数据。

代码语言:javascript
复制
val sql="""select * from db.your_table where id>1"""
val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:mysql:dbserver")
  .option("dbtable",  s"( $sql ) t")
  .option("user", "username")
  .option("password", "password")
  .load()

编写示例

代码语言:javascript
复制
import org.apache.spark.sql.SaveMode

val prop=new java.util.Properties()
prop.put("user","username")
prop.put("password","yourpassword")
val url="jdbc:mysql://host:port/db_name"
//df is a dataframe contains the data which you want to write.
df.write.mode(SaveMode.Append).jdbc(url,"table_name",prop)

中文版戳我

票数 22
EN

Stack Overflow用户

发布于 2016-08-03 01:20:06

对于Scala,如果你使用sbt,这也是可行的。

build.sbt文件中:

代码语言:javascript
复制
libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.2",
    "org.apache.spark" %% "spark-sql" % "1.6.2",
    "org.apache.spark" %% "spark-mllib" % "1.6.2",
    "mysql" % "mysql-connector-java" % "5.1.12"
)

然后,您只需声明您对驱动程序的使用。

代码语言:javascript
复制
Class.forName("com.mysql.jdbc.Driver").newInstance

val conf = new SparkConf().setAppName("MY_APP_NAME").setMaster("MASTER")

val sc = new SparkContext(conf)

val sqlContext = new SQLContext(sc)

val data = sqlContext.read
.format("jdbc")
.option("url", "jdbc:mysql://<HOST>:3306/<database>")
.option("user", <USERNAME>)
.option("password", <PASSWORD>)
.option("dbtable", "MYSQL_QUERY")
.load()
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27718382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档