(作者:陈玓玏)

打开pyspark,带驱动的那种

用命令行启动pyspark时需要加上jdbc的驱动路径:

pyspark --driver-class-path D:/Users/chendile/Downloads/mysql-connector-java-3.1.14.jar

在Linux和Windows命令行下都可以用这种方法,但是如果出现以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o58.load.
: java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required

说明是数据库驱动的版本不对,改成一样的版本就可以了,一般是数据库版本低而java版本高造成的,先在任务管理器中找到自己的mysql服务,找到其对应的版本信息,然后查找对应的mysql-connector-java版本,比如我的mysql是5.1版本的,而我的mysql-connector-java是8.0的,然后我下载了一个3.1版的,就连接成功了。

驱动下载地址:https://blog.csdn.net/qiangqiang816/article/details/81541090
mysql和mysql-connector-java版本的对应:https://www.cnblogs.com/junzi/p/6893122.html

从mysql读取数据为DataFrame

#通过sparksession可以把各种来源的数据读取为DataFrame格式,并在其上使用sql语言
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext#创建session,在appName之前还可以配置.master("local"),master指定spark集群的master,设置为local时表示集群在本地,local[4]表示在本地开四个线程跑集群,设置为“spark://master:7077”,也就是一个集群的master的ip地址,表示是在多台机器上跑集群,appName是你为spark应用取的名字,可以通过这个名字调用的,config是配置应用,不知道怎么配置的话可以直接在config括号中填入conf=SparkConf()),使用默认配置。build类还有enableHiveSupport属性,可以开启hive支持。
sc = SparkSession.builder.appName("python_deal_dat").config('spark.some.config,option0','some-value').getOrCreate()#这句话加不加都能读mysql的数据,用sc.read和ctx.read是一样的结果,但是这句话加了可以解决sparksession的一个大坑,那就是sparksession没有序列化器的问题,没有序列化器很多数据操作没法用,比如foreach,会报错:AttributeError: 'SparkSession' object has no attribute 'serializer',所以最好是用SQLContext(这个问题还是没解决的)
ctx = SQLContext(sc)#读取mysql数据是通过Java的jdbc读取的,url表示数据库地址,从127那里开始要改成你自己的地址,driver必须加,不加会报未指定驱动的错误,
df=ctx.read.format("jdbc").options(url="jdbc:mysql://127.0.0.1:3306/test", driver="com.mysql.jdbc.Driver", dbtable="(SELECT * FROM cdl_var_credit02_loss) tmp",user="root", password="********").load()#通过printSchema获取其列名和每列对应的类型及空值限制
print(df.printSchema())

java.lang.RuntimeException:The root scratch dir:/tmp/hive on HDFS should be writable.错误

我在win8下读取mysql数据库中的内容时遇到了这个问题,其实这个问题的产生和我的代码没什么关系,但它的确影响到了我现在的进度,最后找到的解决方法很简单粗暴,直接在命令行中跳转到spark的bin文件夹,然后输入以下命令:

hadoop fs -rm -r /tmp/hive
rm -rf /tmp/hive  #这个应该是Linux系统下的

然后再读取数据库的内容就没有问题了!

参考资料:
1、 https://blog.csdn.net/zgjdzwhy/article/details/71056801
2、 https://blog.csdn.net/bhcgdh/article/details/80731516
3、 https://blog.csdn.net/zlpzlr/article/details/79012140

Spark连接MySQL数据库并读取数据相关推荐

  1. python链接mysql 判断是否成功_python连接mysql数据库并读取数据的实现

    1.安装pymysql包 pip install pymysql 注: MySQLdb只支持python2,pymysql支持python3 2.连接数据 import pymysql import ...

  2. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...

  3. php显示mysql数据实例_php 连接mysql数据库并显示数据 实例 转载 aoguren

    PHP连接MySQL数据库并显示数据//---------基本设定---------$mysql_server_name = "localhost";//服务器名称:$mysql_ ...

  4. centos7下载spark连接mysql数据库提取数据(pyspark,Scala,python独立执行)

    原文连接: http://dblab.xmu.edu.cn/blog/1724-2/ 原文连接:https://mapr.com/support/s/article/PySpark-to-MySQL- ...

  5. python数据分析之连接MySQL数据库并进行数据可视化

    大家好,我是带我去滑雪! 本期将熟悉MySQL数据库以及管理和操作MySQL数据库的数据库管理工具Navicat Premium,然后在python中调用MySQL数据库进行数据分析和数据可视化. 目 ...

  6. 使用python实现微博评论分词与关键词提取(从MySQL数据库中读取数据)

    一.实验环境 (1)Windows操作系统: (2)PyCharm 2019.1. (3)数据库用户名为 root,密码为 123456. (4)  学校机房电脑,带有mysql 二.获取数据库信息 ...

  7. php连接基础方法怎么查询数据库,php基础之连接mysql数据库和查询数据

    连接数据库,有三种方法 1. 常规方式: ?1234567891011121314$con=mysql_connect($dbhostip,$username,$userpassword)or die ...

  8. 05-JDBC连接MySQL数据库【删除数据】

    JDBC自学教程–终篇总结: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现修改步骤 前三个步骤:注册.获得连 ...

  9. 04-JDBC连接MySQL数据库【修改数据】

    JDBC连接mysql–学习目录: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现修改步骤 前三个步骤:注册. ...

最新文章

  1. 这可能是最中肯的Redis规范了
  2. Parallax Mapping
  3. 计算机工程与应用查重吗,计算机工程期刊录用率_计算机工程与应用期刊_计算机八大核心期刊...
  4. JQuery事件——鼠标事件
  5. python代码修改nginx配置_生产环境部署python代码(django+uwsgi+nginx)
  6. CentOS 7.4 上如何安装 tomcat 9
  7. 为什么说Mac比windows更安全?
  8. php居中函数,PHP实现的自定义图像居中裁剪函数示例
  9. PMP培训机构转个圈
  10. 和python哪个容易胖_哪些吃了最容易长胖呢?
  11. WordPress多功能主题 The7 更新至 v10.4.3 – 已激活汉化版
  12. 深度学习之美(张玉宏)——第四章 人生苦短我用python
  13. 七天时间从电脑小白变成编程高手
  14. .NET新手系列(九)
  15. stormzhang:对于 996,说下我的观点
  16. Python一行代码搞定炫酷可视化,Cufflinks值得拥有 !
  17. 快速实现免费的个人免签收款功能(不写一行代码)
  18. Corona建筑作品 | 272 Hedges Ave 海景顶级豪宅建筑表现
  19. 全网通报:数模国赛作弊的后果
  20. Docker 进入Mysql容器

热门文章

  1. Ubuntu2Go制作使用和资料说明(LinuxtoGo)
  2. 教你使用python在终端创建炫酷二维码!!!
  3. linux点亮硬盘locat,Linux中常用的查询指令(which、whereis、find、locatae)
  4. 关于pyecharts可视化进阶中国经济、人口等数据
  5. Mysql+Echarts+Python+Flask实现前后端交互及数据可视化
  6. 【贪玩巴斯】数字信号处理Digital Signal Processing(DSP)——第四节「离散时间系统分类、线性和非线性、因果和非因果、稳定和不稳定以及互联」2021-10-20
  7. YFCMF,设置跳转后台首页
  8. openbugs软件初步使用
  9. Android 悬浮窗口(及解决6.0以上无法显示问题)
  10. 时间加减计算器_考前急救!2019年注册会计师计算器使用技巧,不会你就out了...