今天在用Streaming-Python处理一个MapReduce程序时,发现reducer失败,原由于耗费内存达到极限了。细致查看代码时,发现有一个集合里保存着URL,而URL长度是比較长的,直接保存确实是耗费内存,于是想到用压缩存储,然后用的时候再解压,尽管处理时间添加。可是耗费内存大大减少!

详细就是使用zlib模块

import zlib

raw_data = "hello,world,ooooooooooooxxxxxxxxxxx"
zb_data = zlib.compress(raw_data) print "len(raw_data)=%d, len(zb_data)=%d, compression ratio=%.2f"\
% (len(raw_data), len(zb_data), float(len(zb_data))/len(raw_data)) # len(raw_data)=35, len(zb_data)=25, compression ratio=0.71
raw_data2 = zlib.decompress(zb_data)
print raw_data2

假设存在网络传输。上面的方法可能失效;比如我跑了一个MapReduce,mapper中压缩,reducer中解压,结果报错:

Traceback (most recent call last):
File "/hadoop/yarn/local/usercache/lming_08/appcache/application_1415110953023_46173/container_1415110953023_46173_01_000018/./build_visitor_company_ulti_info_red.py", line 25, in <module>
urllist += zlib.decompress(urlitem) + "&#1;"
zlib.error: Error -3 while decompressing data: incorrect header check
log4j:WARN No appenders could be found for logger (org.apache.hadoop.hdfs.DFSClient).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

临时还没找到有效办法。

參考:http://my.oschina.net/1123581321/blog/176570

最新文章

  1. 高性能滚动 scroll 及页面渲染优化
  2. Python之集合(set)
  3. silverlight+wcf 项目 silverlight获得web程序的参数
  4. vb.NET基础总结
  5. 包装FTPWebRequest类
  6. ES6数字扩展
  7. Cocos2D-X屏幕适配新解
  8. 网络1711班 C语言第七次作业批改总结
  9. python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
  10. Maskrcnn遇到的坑
  11. ansible Api 2.3-2.4
  12. python基础(17)-IO模型&amp;selector模块
  13. 【Java基础】13、抽象方法不能是static或native或synchroniz 原因及误解
  14. 深入理解 Laravel 中 config 配置加载原理
  15. Java 多线程 fork-join
  16. 累计进度条 PSP 饼图
  17. 自定义 Repository 方法
  18. Spring之基本关键策略
  19. python list.remove(),del()和filter &amp;amp; lambda
  20. [jvm]垃圾回收与内存分配策略

热门文章

  1. google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过程
  2. 引用 Windows Server 2003 FTP服务器配置详解
  3. STM32介绍以及与通常ARM的区别
  4. 至顶网推荐-Rpm另类用法加固Linux安全
  5. Java学习笔记三.2
  6. windows7下安装Office2010提示需要安装MSXML6.10.1129
  7. RFID的工作流程
  8. 基于mybatis的BaseDao及BaseService深度结合(转)
  9. Eclipse使用方法和技巧二十七:定义自己的高速联想词
  10. bitmap-setBounds方法参数研究