热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pyspark的Mysql写入

Spark是大数据中的数据处理大杀器,凭借快速的处理速度,简易的上手,把MapReduce等传统处理方式甩了几条街不止。Spark支持JavaRPythonR,特别是Python的

Spark是大数据中的数据处理大杀器,凭借快速的处理速度,简易的上手,把MapReduce等传统处理方式甩了几条街不止。Spark支持Java/R/Python/R,特别是Python的Spark编程尤为简单快捷。

但pyspark的数据处理后,需要写入 mysql进行数据落地,如何办?

一.需要提交spark时候,加入mysql-connect jar

bin/spark-submit –master yarn-client –num-executors 5 –executor-cores 20 –executor-memory 20g –jars /usr/hdp/2.4.2.0-258/sqoop/lib/mysql-connector-java.jar /opt/spark-2.1.0-bin-hadoop2.7/dig.py

备注下,执行的python程序次序不能错。不然居然找不到mysql驱动。

二.写入的python程序如下:

df.write.jdbc(url="jdbc:mysql://10.0.0.03:3306/test"
"?user=test&password=test123",
mode="append",
table="test",
properties={"driver": 'com.mysql.jdbc.Driver'})

备注下:

1.df是要写入的数据集,类似于R中的dataframe

2.mode是表明是否追加数据,否则创建新表

3.table指定插入的mysql表

4.url是mysql的链接参数。

三.开始执行

《pyspark的 Mysql写入》
《pyspark的 Mysql写入》 用了6个container,133G内存

《pyspark的 Mysql写入》
《pyspark的 Mysql写入》 感觉不错。很快就执行完毕,然后插入mysql了。

打开mysql,一看记录。傻眼,里面都是乱码。

经过不断摸索,终于搞定。

办法是先创建mysql的表编码类型是 GBK,然后改动PySpark的程序,让用GBK的方式来写入,并且是追加方式。

四.解决的办法

mysql>CREATE TABLE test( ….) ENGINE=InnoDB DEFAULT CHARSET=GBK;

改动pySpark代码:

df.write.jdbc(url="jdbc:mysql://10.0.0.3:3306/test"
"?user=test&password=test123&useUnicode=true&characterEncoding=GBK",
mode="append",
table="test",
properties={"driver": 'com.mysql.jdbc.Driver'})

终于,也就是程序写入和存储都是GBK,问题得解。


推荐阅读
author-avatar
赵丶宇森
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有