SparkStreaming中foreachRDD、foreachPartition和foreach 及序列化问题
最近项目遇到报错序列化相关问题,于是把这三个拿出来分析一下,先来看下foreachRDD、foreachPartition和foreach的不同之处。
不同主要在于它们的作用范围不同,foreachRDD作用于DStream中每一个时间间隔的RDD,foreachPartition作用于每一个时间间隔的RDD中的每一个partition,foreach作用于每一个时间间隔的RDD中的每一个元素。
而在执行上也有区分,foreachRdd运行在driver节点,foreachPartition和foreach运行在work节点,这点需要注意,也就是说,如果在worker上用driver上的东西,就有可能报序列化错误问题,例如foreachRDD向外部系统输出数据时,通常要创建一个连接对象,如果像上面的代码中创建在driver上就是错误的,因为foreach在每个节点上执行时节点上并没有连接对象。通常会报序列化错误或者初始化错误。
dstream.foreachRDD { rdd =>
val connection = createNewConnection()
rdd.foreach { record =>
connection.send(record) // executed at the worker}
}
正确代码应为
dstream.foreachRDD { rdd =>
rdd.foreachPartition { partitionOfRecords =>
val connection = createNewConnection()partitionOfRecords.foreach(record => connection.send(record))connection.close()}
}
所以driver与worker之间通信必须要经过序列化,然后并不是所用对象都能被序列化,所以报序列化的问题基本都是这个问题。
相关资讯
-
09.16
云顶之弈s9弗雷尔卓德城邦效果介绍
-
09.16
imovie如何添加音频文件
-
09.16
纵横修仙界内测时间揭晓 纵横修仙界最新内测开启日期与参与方式
-
09.16
元力音乐app如何导入音源
-
09.16
三国天下归心双动召唤阵角色技能详解 三国天下归心双动召唤阵地队搭配与实战攻略
-
09.16
王者荣耀世界虞姬 王者荣耀世界虞姬角色强度分析与实战技巧
游戏推荐
推荐专题
热门阅读
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏