原文连接: http://dblab.xmu.edu.cn/blog/1724-2/
原文连接:https://mapr.com/support/s/article/PySpark-to-MySQL-connectivity?language=en_US (这个网址需要科学上网)
实验环境: centos7.6
spark: 2.4.3
python: 3.6.8
mysql: 5.6.38-log

首先,在home目录下建立jdbc文件夹,方便以后保存各种jdbc连接器
mkdir /home/jdbc
mkdir /home/jdbc/mysql
cd /home/jdbc/mysql

然后到
https://dev.mysql.com/downloads/connector/j/
下载一个MySQL的JDBC驱动

点击download

获取下载地址
https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.16.tar.gz
然后用wget下载到服务器上
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.16.tar.gz

解压文件

tar -zxvf  mysql-connector-java-8.0.16.tar.gz
cp -r mysql-connector-java-8.0.16 /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars


这时,你在jars下就可以看到你刚复制过来的mysql文件夹,文件夹中就有对应的jar文件

pyspark连接mysql数据库

下面,启动pyspark

cd /usr/local/spark/spark-2.4.3-bin-hadoop2.7/bin
./pyspark \
--jars /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar \
--driver-class-path /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar

上面的命令行中,在一行的末尾加入斜杠\,是为了告诉spark-shell,命令还没有结束。

启动进入pyspark以后,可以执行以下命令连接数据库,读取数据,并显示:

jdbcDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/db_test").option("driver","com.mysql.cj.jdbc.Driver").option("dbtable", "temp_testsqqqq").option("user", "root").option("password", "123456").load()jdbcDF.show()

scala 连接mysql数据库

scala 的连接跟pyspark非常相似
前面一样需要下载MySQL的连接器,只是启动方式略有不同。

cd /usr/local/spark/spark-2.4.3-bin-hadoop2.7/bin
./spark-shell \
--jars /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar \
--driver-class-path /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar


进入spark-shell后

val jdbcDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/db_test").option("driver","com.mysql.cj.jdbc.Driver").option("dbtable", "temp_testsqqqq").option("user", "root").option("password", "123456").load()jdbcDF.show()

python程序独立执行

import os
# sparkClassPath = os.getenv('SPARK_CLASSPATH', '/usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar')
os.environ['PYSPARK_SUBMIT_ARGS'] = '--jars /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar  ' \'--driver-class-path /usr/local/spark/spark-2.4.3-bin-hadoop2.7/jars/mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar ' \'pyspark-shell'
# PYSPARK_SUBMIT_ARGS中填写具体的文件路径,与pyspark和scala的是一样的,注意空格间隔from pyspark import SparkContext, SparkConf ,SQLContext
from pyspark.sql import SparkSession
conf = SparkConf()
conf.setMaster("local[*]")
conf.setAppName('mysqltest')
# conf.set('spark.jars','files:%s'%sparkClassPath)
# conf.set('spark.executor.extraClassPath', sparkClassPath)
# conf.set('spark.driver.extraClassPath', sparkClassPath)
conf.getAll()sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)url = "jdbc:mysql://xxx.xxx.x.xxx:3306/db_test"
properties = {"user": "root","password": "123456","driver": "com.mysql.cj.jdbc.Driver"
}
df = sqlContext.read.jdbc(url=url, table="temp_testsqqqq", properties=properties)

查询结果

ssh://root@192.168.61.128:22/usr/local/python3/bin/python3.6 -u /tmp/pycharm_project_466/temp.py
19/06/10 04:53:16 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
19/06/10 04:53:33 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
+---+--------------------------------------+----+----+--------------+--------------------+--------------------+
| id|                                  key1|key2|key3|          col1|                col2|                col3|
+---+--------------------------------------+----+----+--------------+--------------------+--------------------+
|  1|              中石化盛骏投资(深圳)有限公司|null|null|          null|                null|             null...|
|  2|                  深圳望正资产管理有限公司|null|null|          null|             null...|             null...|
+---+--------------------------------------+----+----+--------------+--------------------+--------------------+
only showing top 20 rowsProcess finished with exit code 0

centos7下载spark连接mysql数据库提取数据(pyspark,Scala,python独立执行)相关推荐

  1. Android中连接MySql数据库获取数据的简单实现

    文章目录 背景 demo布局 导入jar包 demo代码实现 权限设置 应用运行的结果 背景 一般情况下,Android与数据库中的数据进行交互都是通过调用api接口来实现的.但是今天我们就来尝试实现 ...

  2. 【工作笔记】如何在MySQL官网下载Java连接MySQL数据库的驱动jar包

    我们在开发时,Java连接MySQL数据库需要驱动jar包,而驱动包的版本要跟MySQL数据库版本相匹配,以下介绍怎样在MySQL官网下载各MySQL数据库对应版本的驱动包. 1.登陆Oracle官网 ...

  3. Spark连接MySQL数据库并读取数据

    (作者:陈玓玏) 打开pyspark,带驱动的那种 用命令行启动pyspark时需要加上jdbc的驱动路径: pyspark --driver-class-path D:/Users/chendile ...

  4. jdbc读取mysql数据库_Ecplise 中利用 JDBC 连接 Mysql 数据库读取数据

    准备工作 将压缩包解压得到文件 mysql-connector-java-5.1.41-bin.jar 备用 打开 Mysql 控制台创建数据库及数据表,并插入测试数据.代码如下: CREATE DA ...

  5. jdbc连接mysql数据库驱动下载_Java Jdbc驱动下载配置连接mysql数据库方法代码

    1.MySQL JDBC驱动下载 打开上面的下载地址,选择"Platform Independent",然后下载tar.gz或zip格式的都行,之后解压出来得到Jdbc驱动(mys ...

  6. java mysql 查询_java连接mysql数据库达成数据查询详细教程

    前言:本篇文章适用于所有前后端开发者 众所周知,只要是编程,那肯定是需要存储数据的,无论是c语言还是java,都离不开数据的读写,数据之间传输不止,这也就形成了现代互联网的一种相互存在关系! 而读写存 ...

  7. ajax连接mysql数据库查询数据_ajax动态查询数据库数据并显示在前台的方法

    今天做了一个ajax动态查询数据库的小Demo,又重新学习了一下ajax的一些知识.在此和大家分享一下...... 啥都别说了,先上代码 Controller层 查询总用户数 @RequestMapp ...

  8. 微信小程序php连接MySQL数据库查询数据

    刚开始学习小程序,做毕业设计,不过一直都被一个问题困扰,就是连接数据库实现数据的同步. 通过其他几篇文章总结出来的成果,记录分享一下,欢迎批评指正! 1.定义好数据库连接 文件名connect.php ...

  9. JPA连接Mysql数据库时提示:Table 'jpa.sequence' dosen't exisit

    场景 在使用JPA连接Mysql数据库进行数据持久化时提示: Table 'jpa.sequence' dosen't exist 注: 博客主页: https://blog.csdn.net/bad ...

最新文章

  1. 【学界】深度学习如何影响运筹学?
  2. CSS Guide Lines
  3. NFS 网络文件系统
  4. 有关调试CRM系统的一些感想
  5. miniob :相关环境配置
  6. 解决: This application has no explicit mapping for /error, so you are seeing this as a fallback.
  7. SQL Server2008数据库管理 (第二部分)
  8. php mysql_affected_rows获取sql执行影响的行数
  9. C#将数据库图片显示在pictureBox
  10. ThinkPHP验证码和分页
  11. 【图像分割】基于matlab各向异性热扩散方程SAR图像分割【含Matlab源码 1879期】
  12. matlab制作水印,怎么在含有水印的图像中提取出水印
  13. 巴菲特致股东的一封信:1996年
  14. javascript-异步之Promise then和catch
  15. 白酒分化明显,中小酒企面临生存困境
  16. [经验教程]拼多多直接免拼是什么意思?
  17. aar打包依赖 android_打包依赖.aar文件以及坑总结
  18. 为什么要在csdn开一个博客
  19. win7 不显示图片缩略图(解决方法)
  20. 防火墙技术在计算机网络安全中的应用分析,计算机网络安全中防火墙技术的应用分析...

热门文章

  1. 腾讯云使用phpStudy部署网站(附腾讯云优惠券)
  2. 【RabbitMQ】RabbitMQ基础
  3. win32俄罗斯方块c++语言 vs2012源代码,C++实现俄罗斯方块
  4. 广州尚顶网络科技有限公司二维码防伪防窜系统
  5. 微软研究院洪小文:人工智能到底是个什么东西?我们应该怎样看待它?
  6. “云+AI”沉锚,百度智能云锁定百度AI产业智能化航道
  7. [附源码]计算机毕业设计Springboot大学生志愿者服务管理系统
  8. CANN训练营第三季_昇腾CANN算子精讲课_TBE算子Sinh开发笔记_UT测试(三)
  9. 虚荣 VG API 分析
  10. 关于车--标致206相关问题解析及选车建议(zt)