惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
Recent Announcements
Recent Announcements
H
Help Net Security
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
小众软件
小众软件
Last Week in AI
Last Week in AI
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
云风的 BLOG
云风的 BLOG
V
V2EX
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿

博客园 - lae

[转]Web开发者必备的12款超赞jQuery插件 NOSql数据库特性对比 NHibernate3新特性初尝 - lae - 博客园 微软回答“关于数据的10个问题” SubSonic 3.0新特性 System.Data.OracleClient调用带blob等大字段类型参数的存储过程 SubSonic入门(下) SubSonic入门(上) SubSonic的controller类的FetchByID()错误解决办法 - lae - 博客园 ASP.NET中文版开发建议 - lae - 博客园 spl工作在remoting方式下的问题总结 - lae - 博客园 [转载]世界杯期间制定给女友或老婆的十二条准则 - lae - 博客园 sql server 2000关于日期的查询 - lae C# 2.0 杂项技术,以及C#语言的未来发展(选择自 shoutor 的 Blog ) C# 2.0 泛型编程(选择自 shoutor 的 Blog ) C# 2.0 匿名方法、迭代器(选择自 shoutor 的 Blog ) C# 2.0 局部类型、空属类型、静态类(选择自 shoutor 的 Blog) 关于在vs.net中的.htm里面添加连接,就会出现下载.ASPX文件的提示? Microsoft Enterprise Library June 2005--Data Access Application Block访问Oracle数据库(1)
[转]程序员应知: 海量数据如何分析
lae · 2010-12-04 · via 博客园 - lae

这个云计算热炒的时代,如果你没有处理过海量数据的话,你将不再是个合格的Coder。现在赶紧补补吧~

  前一阵子分析了一个将近1TB的数据群(gz文件,压缩10%)。因为第一次分析如此巨大的数据,没有经验,所以浪费了许多时间。下面是我整理的一些经验,方便后者。

  下载数据

  Q:怎么自动下载多个文件?

  这是我遇到的第一个问题。当数据量很大时,一般都会分成很多个文件存放。这时下载文件比较麻烦。

  A:用Wget命令。Windows下花费一点时间去下载安装。但之于手动下载,能省不少时间。

  我提供两种方式方式下载文件,

  a)用Wget的递归下载选项 “-r”。一般命令如下

  wget –r http://<下载数据的根目录>/ -o <下载记录文件名> -np

  因为递归下载没法控制进度,所以建议不一要次递归下载太多的文件

  b)用Bat+Wget,多次执行Wget。一般命令如下

  wget –r http://<下载数据的根目录分支1>/ -o <下载记录文件名> -np

  wget –r http://<下载数据的根目录分支2>/ -o <下载记录文件名> -np

  wget –r http://<下载数据的根目录分支3>/ -o <下载记录文件名> -np

  …… ……

  wget –r http://<下载数据的根目录分支N>/ -o <下载记录文件名> -np

  用Bat可以降低出错带来的影响。

  另外,Wget可以通过 –A 选项来指定希望下载的文件的后辍,通过 –P 选项来指定下载文件存放路径。更多命令,参见wget -h

  Q:这速度。。。什么时候才能下完?

  网速永远是个瓶颈

  A:如果下载服务很远的话,你应该考虑代理。wget设置代理的方式如下

  set http_proxy=http://<代理服务器>

  不要忘了多开几个进程,20个试试?

  打开文件

  Q:怎么打开文本文件

  这不是弱智问题。你用记事本打开一个100MB的文件试试

  A:LTF viewer

  Large Text File viewer, 打开速度会让你惊奇

  Q:怎么打开二进制文件

  A:Hex Editor Neo

  你可以通过下面方式来选择进制:

  右击数据区 => Display As => Hex|Decimal|Octal|Binary|Float|Double

  你可以通过下面方式来选择按多少字节显示:

  右击数据区 => Group By => Bytes|Words|Double|Quad

  编程语言

  当数据量很大时,选择语言要慎重了。因为不同语言有不同的特点,你要在编程时间和运行时间之间权衡。

  模型测试

  开始时,一般挑几个小的数据进行测试,获取第一份分析结果。这时当然希望能快速编程实现。脚本语言是一个很好的选择,比如Python。

  大量处理

  开始遍历处理所有数据时,用脚本语言来处理就不太合适了。因为脚本语言的运行时间不能让人接受。另外,还有内存使用,文件读写这些你都没法控制。不幸的是,很少语言会为你处理海量文件做优化。

  这时,C/C++是最好的选择。

  结果展示

  漫长的等待终于过去了,眼看就要出结果了。如果你还执着于陪伴你度过漫长等待的C/C++的话,你迟早会沮丧的。

  我尝试了很多方式之后,得出的结论是,让Matlab来接手C/C++。Matlab能轻而易举地展示大量数据。更重要的是Matlab支持读取二进制文件。

  filename = 'out.bin'; % binary file

  fid = fopen( filename );

  data = fread( fid, itemsNumber, '*uint32');

  fclose(fid); 

------------------------------

原文链接:http://publish.itpub.net/a2010/1203/1133/000001133931.shtml