`
keepwork
  • 浏览: 332594 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于大数据各个级别选择(Pandas、Hadoop)

阅读更多

开发者博客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

分享到:
评论
1 楼 palmtale 2019-04-24  
我居然看了一篇 2013年的文章, 整比你落后了6年。
说地对,基本上 PB极才需要Hadoop;
但也没这么极端。

相关推荐

    尚硅谷大数据技术文档.zip

    通过Hadoop,企业可以处理PB级别的数据,实现大数据的高效存储和分析。 【Spark——快速数据处理引擎】 Spark作为新一代的大数据处理引擎,以其高效、易用和通用性著称。它支持批处理、交互式查询(Spark SQL)、...

    2370500128 大数据技术1班 何圣明.zip

    2. **数据存储**:大数据技术通常涉及到分布式存储系统,如Hadoop的HDFS(Hadoop Distributed File System),它能够处理PB级别的数据,提供高容错性和可扩展性。 3. **数据处理**:MapReduce是Hadoop中用于大规模...

    我们的大数据时代原题.pdf

    处理大数据需要一系列的技术工具和框架,包括数据采集(如Flume、Kafka)、数据存储(如Hadoop HDFS、Cassandra)、数据处理(如MapReduce、Spark)、数据挖掘与分析(如Hive、Pig、Python Pandas)、数据可视化(如...

    审计大数据应用场景设计图例.rar

    在运营审计中,大数据可以提供关于企业运营效率和效果的深度洞察;在合规审计中,大数据技术则有助于确保企业遵循各项法规和内部政策。 设计审计大数据应用时,通常会涉及到以下几个关键环节: 1. 数据采集:这是...

    大数据背景下Python技术在审计工作中的应用.zip

    在大数据环境中,Python还与Hadoop、Spark等分布式计算框架集成良好,可以处理PB级别的数据。例如,使用PySpark,审计人员可以在分布式环境下执行大规模的数据分析,提高处理效率,降低计算资源的消耗。 机器学习也...

    基于Python挖掘的大数据学术研究与人才需求的关系研究 (1).zip

    2. 高性能计算:面对PB级别的数据,分布式计算框架如Hadoop和Spark与Python结合,实现了大数据的实时处理和分析。 3. 数据驱动的科学发现:通过大数据分析,科研人员能够在跨学科领域找到新的关联,促进理论创新。 ...

    大数据

    在这个信息化时代,大数据已经渗透到各个行业,包括金融、医疗、零售、交通等,帮助企业进行精准营销、优化决策和提升运营效率。 Python语言在大数据领域扮演着至关重要的角色。Python以其易学易用、丰富的库支持和...

    Big-Data:大数据技术

    在大数据技术中,Hadoop是一个核心组件,它提供了分布式文件系统(HDFS)和MapReduce计算模型,能够处理和存储PB级别的数据。Hadoop的生态系统还包括Hive(用于数据仓库和SQL查询)、Pig(高级数据处理语言)、Spark...

    big-data-computing-20-21:大数据计算2021

    大数据计算,作为现代信息技术的重要组成部分,已经深入到各个行业,从科学研究到商业决策,从社会管理到个人生活,无处不在。2021年的大数据计算领域,Python语言以其易学易用、丰富的库支持和强大的数据处理能力,...

    STS2011_BDP

    1. **Hadoop HDFS**:Hadoop Distributed File System(HDFS)是大数据存储的基础,它设计为可扩展且容错性高的分布式文件系统,适合处理PB级别的数据。 2. **Apache Spark**:Spark是一种快速、通用的大数据处理...

    CS-Wiki.zip

    面对PB级别的大数据,传统的数据库无法应对。Hadoop、Spark等大数据处理框架应运而生,它们提供了分布式存储和计算的能力,使得处理大规模数据成为可能。 八、可视化与报告 数据可视化是数据分析的直观展现,通过...

    分布式计算

    这种技术在处理大数据、云计算、人工智能等领域具有广泛应用,尤其在需要高计算性能和扩展性的场景下,分布式计算能够提供强大的计算能力。 在Python编程语言中,我们可以利用各种库和框架来实现分布式计算。例如,...

    carbon-map:欧洲碳排放量测绘工具

    大数据技术如Hadoop、Spark可能在后台支持数据的存储和处理。 4. **Python编程**:Jupyter Notebook广泛使用Python作为主要编程语言,Python在数据分析和科学计算领域有着强大的库支持,例如Pandas用于数据清洗和...

Global site tag (gtag.js) - Google Analytics