Spark学习之17:Spark访问MySQL

本文描述使用Spark1.4,在spark-shell环境中访问mysql的用法。

1. 准备MySQL的JDBC驱动

将mysql对应版本的驱动上传到启动spark-shell的服务器。这里,将mysql驱动放在$SPARK_HOME的ext目录(自己新建的)。测试连接的是MySQL 5.6.19,驱动程序为mysql-connector-java-5.1.31.jar。

2. 启动spark-shell

在$SPARK_HOME目录,执行:
bin/spark-shell --jars ext/mysql-connector-java-5.1.31.jar
启动spark-shell。通过--jars参数指定驱动。

3. 在命令行中写入代码

import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
val url = "jdbc:mysql://192.168.245.1:8866/mind"
val table = "orders"
val reader = sqlContext.read.format("jdbc")
reader.option("url", url)
reader.option("dbtable", table)
reader.option("driver", "com.mysql.jdbc.Driver")
reader.option("user", "mind")
reader.option("password", "123456")
val df = reader.load()
df.show()
sqlContext.read方法返回一个DataFrameReader对象。
重要是要设置好DataFrameReader对象的属性,通过它的option方法,当然也可将属性以Map对象的方式一次性设置(options方法)。
其中:
(1)url设置数据库路径;
(2)dbtable属性表示要查询的表,它也可以是一个用括号括起来的子查询(具体可以参考官方文档);
(3)driver属性设置驱动程序名称;
(4)user设置数据库用户名;
(5)password设置用户密码。
这五个属性是必须设置的。
reader.load方法即将返回一个DataFrame对象,在该例子中,它将返回整个orders表的数据。
show用于显示DataFrame中的数据。
该例中显示结果:
Spark学习之17:Spark访问MySQL_第1张图片

通过 DataFrameReader的jdbc方法也可以,尚未试验成功。

你可能感兴趣的:(Spark)