连接关系型数据库转换为DF对象。
上传mysql-connector-java-5.1.28-bin.jar包
启动参数方式:
bin/spark-shell--master=local[4] --driver-class-path=mysql-connector-java-5.1.28-bin.jar
注意:此时jar包放置在的位置可以自定义 但是在单机启动的时候 需要在jar包所在位置启动spark-shell
1)mysql服务器要能远程连接
2) mysql要授权远程访问权限
mysql–uroot –proot
mysql>grantall privileges on *.* to 'root'@'ip' identified by 'root'
mysql>flushprivileges;
执行代码
valprop = new java.util.Properties
prop.put("user","root")
prop.put("password","root")
valdf=sqlContext.read.jdbc("jdbc:mysql://ip:3306/jtdb","tb_user",prop)
df: org.apache.spark.sql.DataFrame = [id: bigint,username: string, password: string, phone: string, email: string, created:timestamp, updated: timestamp]
用在当关系型数据库需要groupby等,由于数据量太大它做不了或者太慢。就可以交给spark来完成。
还有一种是在集群开启的时候 需要防止一个位置 然后在spark-env.sh中配置SPARK_CLASSPATH =(填写jar包的绝对路径) 需要注意的是 在子节点中也要放置jar包 也需要配置SPARK_CLASSPATH 配置成功之后 重启spark
配置文件方式:
SPARK_LOCAL_IP=192.168.1.106
SPARK_CLASSPATH=mysql-connector-java-5.1.28-bin.jar
bin/spark-shell --master=local[4]
val jdbcdf =sqlContext.load("jdbc",Map("url"->"jdbc:mysql://192.168.1.101:3306/jtdb?user=root&password=root","dbtable"->"tb_user"))
jdbcdf.show