十.SparkSQL之外部数据源操作mysql表数据

引言:
Spark SQL还包括一个可以使用JDBC从其他数据库读取数据的数据源。与使用JdbcRDD相比,此功能应该更受欢迎。这是因为结果作为DataFrame返回,它们可以在Spark SQL中轻松处理或与其他数据源连接。JDBC数据源也更易于使用Java或Python,因为它不需要用户提供ClassTag。(请注意,这与Spark SQL JDBC服务器不同,后者允许其他应用程序使用Spark SQL运行查询)。

操作Mysql表数据
首先启动spark-shell,命令如下:

./spark-shell --master local[2] --jars ~/software/mysql-connector-java-5.1.38.jar

读操作方式一:

spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/hiveDB").option("dbtable", "hiveDB.TBLS").option("user", "root").option("password", "123456").load()

运行之后会产生下面这种错误:

java.sql.SQLException: No suitable driver

原因就是没有加载mysql的驱动Driver类,解决方法就是加上,新的命令如下:

spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/hiveDB").option("dbtable", "hiveDB.TBLS").option("user", "root").option("password", "123456").option("driver","com.mysql.jdbc.Driver").load()

结果显示:
在这里插入图片描述

由于直接返回DataFrame类型的数据,可以通过printSchema和show方法进行查看操作,结果如下:
在这里插入图片描述
在这里插入图片描述

读操作方式二:
通过java中的Properties配置文件的形式进行读取:

import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", "root")
connectionProperties.put("password", "123456")
connectionProperties.put("driver", "com.mysql.jdbc.Driver")
val jdbcDF3 = spark.read.jdbc("jdbc:mysql://localhost:3306", "hiveDB.TBLS", connectionProperties)

结果显示:
在这里插入图片描述

写操作方式一(通过spark-shell命令行):

// Saving data to a JDBC source
   jdbcDF.write
   .format("jdbc")
   .option("url", "jdbc:mysql://localhost:3306")
   .option("dbtable", "schema.tablename")  //创建新的表
   .option("user", "username")
   .option("password", "password")
   .save()

结果显示:
在这里插入图片描述
写操作方式二(通过spark-sql命令行):
启动spark-sql:

./spark-sql --master local[2] --jars ~/software/mysql-connector-java-5.1.38.jar

操作:

 CREATE TEMPORARY VIEW jdbcTable
 USING org.apache.spark.sql.jdbc
 OPTIONS (
 url 'jdbc:mysql://localhost:3306',
 dbtable "hiveDB.TBLS",		
 user 'root',
 password '123456',
 driver 'com.mysql.jdbc.Driver'   //一定要加驱动
  );

结果显示:
在这里插入图片描述

至此就完成了SparkSQL的外部数据源对mysql数据表的操作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值