在spark中操作mysql数据 ---- spark学习之七
使用spark的 DataFrame 来操作mysql数据。
DataFrame是比RDD更高一个级别的抽象,可以应用SQL语句进行操作,详细参考:
https://spark.apache.org/docs/latest/sql-programming-guide.html
这里暂时使用spark-shell进行操作,
1.首先,必须要先下载一个mysql的jdbc的驱动
可以从这里下载
2.然后呢,就好办了。
#具体的启动spark-shell的方法(带上mysql的driver)
$~/spark-shell --driver-class-path /path-to-mysql-jar/mysql-connector-java-5.1.-bin.jar
#定义mysql的信息
val url="jdbc:mysql://10.181.176.226:3306/geo_info"
val prop = new java.util.Properties
prop.setProperty("user","geo")
prop.setProperty("password","xxxxxx”)
#指定读取条件,这里 Array("country_code='CN'") 是where过滤条件
val cnFlight = sqlContext.read.jdbc(url,"gps_location",Array("country_code='CN'"),prop)
#然后进行groupby 操作,获取数据集合
val emailList = cnFlight.groupBy("gps_city", "user_mail”)
#计算数目,并根据数目进行降序排序
val sorted = emailList.count().orderBy( desc("count") ) #显示前10条
sorted.show() #存储到文件(这里会有很多分片文件。。。)
sorted.rdd.saveAsTextFile("/home/qingpingzhang/data/flight_top”) #存储到mysql表里
sorted.write.jdbc(url,"table_name",prop)
3.具体文件编写代码,然后提交worker也类似,主要是DataFrame的 sqlContext声明会不一样。
val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
这里如果要用spark-submit,则会有坑,即便你是用sbt的assembly来打包的一个全的jar包:
参考:http://www.iteblog.com/archives/1300
[itelbog@iteblog ~]$ bin/spark-submit --master local[] --driver-class-path lib/mysql-connector-java-5.1..jar --class spark.SparkToJDBC ./spark-test_2.-1.0.jar
在spark中操作mysql数据 ---- spark学习之七的更多相关文章
- ScalikeJDBC,操作mysql数据,API
ScalikeJDBC,操作mysql数据,API 一.构建maven项目,添加pom.xml依赖 二.resource文件下创建application.conf文件,并配置以下内容 三.操作mysq ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- (转)Python中操作mysql的pymysql模块详解
原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python ...
- openresty开发系列28--openresty中操作mysql
openresty开发系列28--openresty中操作mysql Mysql客户端 应用中最常使用的就是数据库了,尤其mysql数据库,那openresty lua如何操作mysql呢? ...
- Go中操作mysql
Go中操作mysql 首先在mysql里的test数据库中创建数据表 CREATE TABLE `userinfo` ( `uid` INT(10) NOT NULL AUTO_INCREMENT, ...
- 解决spark中遇到的数据倾斜问题
一. 数据倾斜的现象 多数task执行速度较快,少数task执行时间非常长,或者等待很长时间后提示你内存不足,执行失败. 二. 数据倾斜的原因 常见于各种shuffle操作,例如reduceByKey ...
- Dos中查看mysql数据时 中文乱码
使用jsp页面查看数据时可以正确显示中文,但是dos窗口查看数据时中文显示乱码. 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的 ...
- docker 使用mysqldump命令备份导出项目中的mysql数据
下图为镜像重命名后的镜像名为uoj,现在要把这个镜像中的mysql导出 运行如下命令: docker exec -it uoj mysqldump -uroot -proot app_uoj233 & ...
- python中操作mysql
import pymysql # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd=' ...
随机推荐
- @ResponseBody 返回中文乱码问题解决 spingmvc
<!-- UTF8解决乱码问题 --> <bean class="org.springframework.web.servlet.mvc.method.annotation ...
- 如何使用AssemblyInfo中的Attribute?
问题:在生成的项目文件中有个文件:Properties ->AssemblyInfo.cs,可以为程序添加一些属性.主要用来设定生成的有关程序集的常规信息dll文件的一些参数,下面是默认的Ass ...
- 快速求n的质因子(数论)
快速求n的质因子 如何尽快地求出n的质因子呢?我们这里又涉及两个好的算法了! 第一个:用于每次只能求出一个数的质因子,适用于题目中给的n的个数不是很多,但是n又特别大的 #include<std ...
- gerrit集成gitweb:Error injecting constructor, java.io.IOException: Permission denied
使用gerrit账户在centos上安装gerrit,然后集成gitweb,gerrit服务启动失败,查看日志,报错信息如下: [-- ::,] ERROR com.google.gerrit.pgm ...
- MSBuild简单介绍
背景 托博客园的福,上周六,有家开发医疗行业系统的初创公司联系我,说在博客园上看到我关于WPF的几篇文章,邀请我去他们那里交流WPF相关的技术知识和心得体会.作为非大拿的我自然是受宠若惊,但对方好意相 ...
- ESL python调用C模块时传递unicode字符串报错问题解决
在是用freeswitch时利用ESL的python调用时传递字符串报错 TypeError: in method 'ESLconnection_api', argument 2 of type 'c ...
- CentOS6开启FTP及telnet服务教程
先来开通CentOS6的FTP服务吧.telnet服务也一并学习学习吧.在安装好CentOS以后,需要设置Ftp和Telnet服务文件,才能启动Ftp和Telnet服务,可以通过远程控制进行开启. 开 ...
- CAPI学习心得
比较有意义资料 Education .ppt User-guide Coherent Accelerator Interface Architecture.pdf ------------------ ...
- Linxu学习之03_LInux文件与目录管理
同样只介绍相关命令 这节相关主要的命令有这些: 1.目录的相关操作 cd----切换目录 pwd----显示当前目录 mkdir----新建一个新的目录 rmdir----删除一个空的目录
- 【转载】Java常量池
本篇随笔为转载,原贴地址:Java常量池理解与总结. (其实Java的常量池有点像C++中的存储字符串常量的常量存储区). 一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法 ...