在spark中操作mysql数据 ---- spark学习之七
2015-12-15 14:27
661 查看
使用spark的 DataFrame 来操作mysql数据。
DataFrame是比RDD更高一个级别的抽象,可以应用SQL语句进行操作,详细参考:
https://spark.apache.org/docs/latest/sql-programming-guide.html
这里暂时使用spark-shell进行操作,
1.首先,必须要先下载一个mysql的jdbc的驱动
可以从这里下载
2.然后呢,就好办了。
3.具体文件编写代码,然后提交worker也类似,主要是DataFrame的 sqlContext声明会不一样。
这里如果要用spark-submit,则会有坑,即便你是用sbt的assembly来打包的一个全的jar包:
参考:http://www.iteblog.com/archives/1300
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.34-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(10) #存储到文件(这里会有很多分片文件。。。) 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[2] --driver-class-path lib/mysql-connector-java-5.1.35.jar --class spark.SparkToJDBC ./spark-test_2.10-1.0.jar
相关文章推荐
- MySql错误处理(四)- 错误代码和消息
- Mysql
- MySQL SQL分析(SQL profile)
- MySQL update join 用法实例
- 14款经典的MySQL客户端软件
- 装完mysql启动报错:“Table ‘mysql.plugin’ doesn’t exist” 解决方法
- Mysql中判断一个字段是不是为null注意点
- 怎么解决mysql不允许远程连接的错误
- mysql cmd 链接方法 导入sql
- 解析mysql索引
- 64位Win7下安装mysql教程(原创亲测可用)
- mysql客户端(Navicat)远程登录操作遇到问题1142
- mysql 恢复
- 解决ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- C# MySQL Helper
- mysql的分区技术
- MySQL 无法启动:1067进程意外终止
- MySql数据库的常用命令
- Mysql学习四部曲
- MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法