Spark将计算结果写入到Mysql中
来源:互联网 发布:大数据风控平台价格 编辑:程序博客网 时间:2024/05/20 03:05
今天主要来谈谈如果将Spark计算的结果写入到Mysql或者其他的关系型数据库里面。其实方式也很简单,代码如下:
01
/**
02
* User: 过往记忆
03
* Date: 15-03-10
04
* Time: 上午07:30
05
* bolg: http://www.iteblog.com
06
* 本文地址:http://www.iteblog.com/archives/1275
07
* 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
08
* 过往记忆博客微信公共帐号:iteblog_hadoop
09
*/
10
package
scala
11
12
import
java.sql.{DriverManager, PreparedStatement, Connection}
13
import
org.apache.spark.{SparkContext, SparkConf}
14
15
object
RDDtoMysql {
16
17
case
class
Blog(name
:
String, count
:
Int)
18
19
def
myFun(iterator
:
Iterator[(String, Int)])
:
Unit
=
{
20
var
conn
:
Connection
=
null
21
var
ps
:
PreparedStatement
=
null
22
val
sql
=
"insert into blog(name, count) values (?, ?)"
23
try
{
24
conn
=
DriverManager.getConnection(
"jdbc:mysql://localhost:3306/spark"
,
25
"root"
,
"123456"
)
26
iterator.foreach(data
=
> {
27
ps
=
conn.prepareStatement(sql)
28
ps.setString(
1
, data.
_
1
)
29
ps.setInt(
2
, data.
_
2
)
30
ps.executeUpdate()
31
}
32
)
33
}
catch
{
34
case
e
:
Exception
=
> println(
"Mysql Exception"
)
35
}
finally
{
36
if
(ps !
=
null
) {
37
ps.close()
38
}
39
if
(conn !
=
null
) {
40
conn.close()
41
}
42
}
43
}
44
45
def
main(args
:
Array[String]) {
46
val
conf
=
new
SparkConf().setAppName(
"RDDToMysql"
).setMaster(
"local"
)
47
val
sc
=
new
SparkContext(conf)
48
val
data
=
sc.parallelize(List((
"www"
,
10
), (
"iteblog"
,
20
), (
"com"
,
30
)))
49
data.foreachPartition(myFun)
50
}
51
}
其实是通过foreachPartition遍历RDD的每个分区,并调用普通的Scala方法来写数据库。在运行程序之前需要确保数据库里面存在blog表,可以通过下面语句创建:
1
CREATE
TABLE
`blog` (
2
`
name
`
varchar
(255)
NOT
NULL
,
3
`
count
`
int
(10) unsigned
DEFAULT
NULL
4
) ENGINE=InnoDB
DEFAULT
CHARSET=utf-8
然后直接运行上述的代码即可。运行完成你就可以在数据库里面查询结果:
1
SELECT
*
FROM
blog b;
2
www 10
3
iteblog 20
4
com 30
需要注意的是:
1、你最好使用forEachPartition 函数来遍历RDD,并且在每台Work上面创建数据库的connection。
2、如果你的数据库并发受限,可以通过控制数据的分区来减少并发。
3、在插入Mysql的时候最好使用批量插入。
4、确保你写入数据库过程能够处理失败,因为你插入数据库的过程可能会经过网络,这可能会导致数据插入到数据库失败。
5、不建议将你的RDD数据写入到Mysql等关系型数据库中。
1、你最好使用forEachPartition 函数来遍历RDD,并且在每台Work上面创建数据库的connection。
2、如果你的数据库并发受限,可以通过控制数据的分区来减少并发。
3、在插入Mysql的时候最好使用批量插入。
4、确保你写入数据库过程能够处理失败,因为你插入数据库的过程可能会经过网络,这可能会导致数据插入到数据库失败。
5、不建议将你的RDD数据写入到Mysql等关系型数据库中。
0 0
- spark将计算结果写入到mysql中
- Spark将计算结果写入到Mysql中
- Spark将计算结果写入到Mysql中
- 将Mysql查询结果写入到文件
- spark sql读取mysql数据源并且将结果写入mysql
- mapreduce的结果写入到mysql中
- Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)
- Spark写入数据到MySQL
- 从一个文件读取内容计算出结果,将结果写入到另一个文件中
- 如何用vb将计算结果输出到word中?
- python 查询Mysql并将记录写入到Excel中
- python【番外篇】:将xml中的数据写入到mysql中
- 将MySQL中sql运行结果保存到文件
- MySQL将查询结果插入到数据表中
- 将MySQL中sql运行结果保存到文件
- MySQL将查询结果插入到数据表中
- MySQL将查询结果插入到数据表中
- 将mysql的查询结果保存到文件中
- OAuth2.0 Authorization flows and grant types
- ThinkPHP框架总结之基础及使用
- 百万级访问网站前期的技术准备
- 最简单的Mac xcode下搭建lua
- Linux bash shell中. & source & ./的区别
- Spark将计算结果写入到Mysql中
- 配置tomcat jvm 及cpu查看
- 大型网站架构不得不考虑的10个问题
- kill killall pkill 杀死php后台进程
- spark源码学习(五)--- DAGScheduler中的stage的划分
- Bluemix结合RabbitMq实现消息发送与接收实例
- 大型网站的灵魂- 性能
- 推送PEM 文件的生成
- Python思考之一:『性质决定用途』——利用set和dict来进行去重