开发者博客:www.developsearch.com
Hadoop里,所有计算都必须按照一个map、一个group by、一个aggregate或者这种计算序列来写。这和穿上紧身衣一样,多憋得慌啊。许多计算用其他模型其实更适合。忍受紧身衣的唯一原因就是,可以扩展到极大极大的数据集。可你的数据集实际上很可能根本远远够不上那个数量级。
可是呢,因为Hadoop和大数据是热词,世界有一半的人都想穿上紧身衣,即使他们根本不需要。
可我的数据有好几百MB呢!Excel都装不下
对Excel很大可不是什么大数据。有很多好工具——我喜欢用的是基于Numpy的Pandas。它可以将几百MB数据以高效的向量化格式加载到内存,在我已经3年的老笔记本上,一眨眼的功夫,Numpy就能完成1亿次浮点计算。Matlab和R也是很棒的工具。
数百MB数据一般用一个简单的Python脚本逐行读取文件、处理,然后写到了一个文件就行了。
可我的数据有10G呢!
我刚买了一台笔记本电脑。16G内存花了141.98美元,256GB SSD多收200美元。另外,如果在Pandas里加载一个10GB的csv文件,实际在内存里并没有那么大——你可以将 “17284932583” 这样的数值串存为4位或者8位整数,“284572452.2435723”存为8位双精度。
最差情况下,你还可以不同时将所有数据都一次加载到内存里。
可我的数据有100GB/500GB/1TB!
一个2T的硬盘才94.99美元,4T是169.99。买一块,加到桌面电脑或者服务器上,然后装上PostgreSQL(PG 是免费开源人,而且它的表是以文件形式存储)。
Hadoop的适用范围远小于SQL和Python脚本
从计算的表达能力来说,Hadoop比SQL差多了。Hadoop里能写的计算,在SQL或者简单的Python脚本都可以更轻松地写出来。
SQL是直观的查询语言,没有太多抽象,业务分析师和程序员都很常用。SQL查询往往非常简单,而且一般也很快——只要数据库正确地做了索引,要花几秒钟的查询都不太多见。
Hadoop没有任何索引的概念,它只知道全表扫描。而且Hadoop抽象层次太多了——我之前的项目尽在应付Java内存错误、内存碎片和集群竞用了,实际的数据分析工作反而没了时间。
如果你的数据结构不是SQL表的形式(比如纯文本、JSON、二进制),一般写一小段Python或者Ruby脚本按行处理更直接。保存在多个文件里,逐个处理即可。SQL不适用的情况下,从编程来说Hadoop也没那么糟糕,但相比Python脚本仍然没有什么优势。
除了难以编程,Hadoop还一般总是比其他技术方案要慢。只要索引用得好,SQL查询非常快。比如要计算join,PostgreSQL只需查看索引(如果有),然后查询所需的每个键。而Hadoop呢,必须做全表扫描,然后重排整个表。排序通过多台机器之间分片可以加速,但也带来了跨多机数据流处理的开销。如果要处理二进制文件,Hadoop必须反复访问namenode。而简单的Python脚本只要反复访问文件系统即可。
可我的数据超过了5TB!
你的命可真苦——只能苦逼地折腾Hadoop了,没有太多其他选择(可能还能用许多硬盘容量的高富帅机器来扛),而且其他选择往往贵得要命(脑海中浮现出IOE等等字样……)。
用Hadoop唯一的好处是扩展。如果你的数据是一个数TB的单表,那么全表扫描是Hadoop的强项。此外的话,请关爱生命,尽量远离Hadoop。它带来的烦恼根本不值,用传统方法既省时又省力。
开发者博客:www.developsearch.com
相关推荐
大数据 numpy pandas pyplot 基础复习
简单介绍了在Python中利用Pandas处理大数据的过程,Pandas库的使用能够很好地展现数据结构,是近来Python项目中经常被使用使用的热门技术,需要的朋友可以参考下
大数据可视化技术实验二Pandas的基本操作
大数据Python数据分析处理库-pandas实战:Pandas代码 新的 da ta Pandas练习题.ipynb 17-apply操作.ipynb 16-大 数据处理技巧.ipynb 16-大数据处理.ipynb 15-Pandas绘图. ipynb 14-索引2.ipynb 13-字符串操作.ipynb ...
一般来说,用pandas处理小于100兆的数据,性能不是问题。当用pandas来处理100兆至几个G的数据时,...本文我们讨论pandas的内存使用,展示怎样简单地为数据列选择合适的数据类型,就能够减少dataframe近90%的内存占用。
Python中的pandas与matplotlib,numpy等库进行数据分析的一些基础代码。
Pandas综合练习题一 一、查看数据表基本信息操作 二、重复数据处理操作 三、异常值处理操作 四、缺失值处理操作 五、提取其他关键信息,补全字段操作
数据仓库~有关于pandas库的学习报告 小丸子帮大家总结到位了 希望可以帮助各位 点赞收藏哈!!!
在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章《别老扯什么Hadoop了,你的数据根本不够大》指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择。这次拿到近亿条日志数据,千万级数据...
pandas官方文档中文版,介绍pandas库的函数、用法
pandas教程:[2]DataFrame选择数据 pandas教程:[3]DataFrame切片操作 pandas教程:[4]Dataframe筛选数据 pandas教程:[5]读取csv数据 pandas教程:[6]计数统计 pandas教程:[7]筛选计数统计 pandas教程:[8]数据...
利用大数据,机器学习等技术对求职者和职位信息进行画像建模,并通过推荐算法对求职者做出职位的智能推荐。 构建一个基于Scrapy的招聘推荐系统涉及多个步骤,包括数据爬取、数据清洗和转换(ETL)、数据存储、画像...
含有多种pandas运用教程,包含代码仓库
Pandas手册.pdf
pandas1.4.3官方文档
pandas 中文手册,便于初学者大致了解pandas大致功能。官方教程是官方文档的教程页面上的教程。包括:十分钟搞定 pandas、Pandas 秘籍、学习 Pandas
Python3.7Pandas离线包
分类目录——Pandas 导入支持包 import pandas as pd import numpy as np 生成测试数据 dates = pd.date_range('20200217', periods=6) df = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=['...
官方网站上《10 Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对 pandas 的一个简单的介绍,详细的介绍请参考:秘籍 。习惯上,我们会按下面格式引入所需要的包:
Pandas官方文档中文版