技术点:RDD的join操作可能产生数据倾斜,当两个RDD不是非常大的情况下,可以通过Broadcast的方式在reduce端进行类似(Join)的操作:

  broadcast是进程级别的,只读的。

  broadcast 可以适用于小表的广播,通过广播到对应节点的内存中(受blockManager的管理),该节点的Rdd通过mapPartitions方法,并通过blockmanager获取到broadcast的内容,进行对相同的key进行(join)操作。

  map方法是将遍历rdd的每个partitions中的每条记录,mapPartitions是遍历到rdd的每个Partitions,相当是基于一个数组(相当于每个partition的缓存)进行批量操作。

适用场景:这种通过Broadcast广播的方式适用于小表,不适用于RDD的数据量非常大的情况,可能会导致OOM,并且对于Gc也是一个比较大的负担(broadcast的变量占用的内存,很容易就会成为Jvm中老年代的成员,且占用较大)。

最新文章

  1. html5开发之viewport使用
  2. Redis持久化-数据丢失及解决
  3. HDU 3333 Turing Tree --树状数组+离线处理
  4. Hadoop-env.sh[翻译]
  5. 【BZOJ】【2938】【POI2000】病毒
  6. 关于在Struts2框架下实现文件的上传功能
  7. C# 文件管理类 Directory
  8. 自己画一个ActivityIndicatorView-b
  9. HDU 4916 树分治
  10. Entity Framework 学习高级篇1—改善EF代码的方法(上)
  11. 初识ajax
  12. RabbitMQ资料
  13. mac brew install error
  14. php 字符串固定长度,不够补充其他字符串
  15. C语言函数部分
  16. Elasticsearch学习之配置小记
  17. python练习:一行搞定-统计一句话中每个单词出现的个数
  18. 怎样更新CentOS6.5的yum源
  19. win32 注册表操作
  20. ASP.NET 5 RC 2:UrlRouting 设置(不包含MVC6的UrlRouting设置)

热门文章

  1. ES6深入浅出-5 新版对象-1.如何创建对象
  2. 封装Email相关的操作
  3. 【Spring】基于@Aspect的AOP配置
  4. [译]使用Pandas读取大型Excel文件
  5. Linux的桌面虚拟化技术KVM(四)——虚拟机镜像格式对比与转换
  6. python通过socket实现多个连接并实现ssh功能详解
  7. npm 全局安装路径 在哪里
  8. Qt563x86vs2015.编译错误(TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension(0x????????) is not a function)
  9. mysql备份时过滤掉某些库 以及 去掉"Warning: Using a password on the command line interface can be insecure."提示信息
  10. python 线程队列PriorityQueue(优先队列)(37)