Python是否适合大数据


14

我在这篇文章中读到的是,R语言适用于大数据构成的大数据5TB,尽管它很好地提供了有关使用这种类型的数据的可行性的信息,R但提供的信息却很少Python。我想知道是否Python也可以处理这么多数据。

Answers:


18

需要澄清的是,我觉得OP最初的问题引用可能不是SO型格式的最佳选择,但是python在这种特殊情况下,我一定会代表。

首先,我要说的是,无论您的数据大小如何,python都不应成为您的限制因素。实际上,在处理大型数据集时,只有两个主要问题:

  • 将数据读入内存 -这是迄今为止大数据世界中最常见的问题。基本上,读取的数据量不能超过内存(RAM)的数据量。解决此问题的最佳方法是对数据进行原子操作,而不是尝试一次读取所有内容。
  • 存储数据 -实际上,这只是早期发行版的另一种形式,到1TB您了解有关时,您开始不得不寻找其他地方进行存储。AWS S3是最常见的资源,并且python具有出色的boto库,可帮助您处理大量数据。
  • 网络延迟 -在不同服务之间移动数据将成为您的瓶颈。除了尝试选择位于同一地点的资源并插入墙外,您无法采取大量措施来解决此问题。

13

处理大数据时,您需要了解以下几点:

什么是大数据?

您可能已经知道大数据的著名V-体积,速度,多样性...因此,Python可能并不适合所有。它与所有可用的数据科学工具一起使用。您需要知道哪种工具对什么目的都有好处。

如果处理大量数据:

  • 猪/蜂巢/鲨鱼-数据清理和ETL工作
  • Hadoop / Spark-分布式并行计算
  • Mahout / ML-Lib-机器学习

现在,您可以在中间阶段使用R / Python,但您会意识到它们已成为整个过程的瓶颈。

如果处理数据速度:

  • Kafka / Storm-高通量系统

人们在这里尝试R / Python,但这又取决于您想要的并行性和模型的复杂性。

您想进行哪种分析?

如果您的模型要求将所有数据首先存储到内存中,那么您的模型应该不会很复杂,因为如果中间数据很大,则代码将被破坏。而且,如果您考虑将其写入磁盘,则将面临额外的延迟,因为与RAM相比,磁盘读/写速度较慢。

结论

您绝对可以在大数据空间中使用Python(当然,由于人们正在尝试使用R,所以为什么不使用Python),但是首先要了解您的数据和业务需求。可能会有更好的工具可供使用,并且切记:

您的工具不应决定您如何回答问题。您的问题应确定您使用的工具。


8

Python有一些非常好的用于处理大数据的工具:

麻木

Numpy的内存映射数组使您可以像访问数组一样访问保存在磁盘上的文件。仅将您正在使用的阵列部分加载到内存中。它的用法与普通数组几乎相同。

h5py和pytables

这两个库提供对HDF5文件的访问。这些文件仅允许访问部分数据。此外,由于使用了用于访问数据的底层库,因此无需将数据加载到python数据结构中就可以完成数据的许多数学运算和其他操作。可能会出现海量,高度结构化的文件,远大于5 TB。它还允许无缝,无损压缩。

资料库

有多种类型的数据库可让您存储大数据集并仅加载所需的部分。许多数据库都允许您进行操作,而根本不需要将数据加载到python数据结构中。

大熊猫

这允许高层访问各种类型的数据,包括HDF5数据,csv文件,数据库甚至网站。对于大数据,它提供了围绕HDF5文件访问的包装器,使对大数据集的分析变得更加容易。

mpi4py

这是一个用于在多个处理器甚至多台计算机上以分布式方式运行python代码的工具。这使您可以同时处理部分数据。

DASK

它提供了一个普通numpy数组的版本,该数组以多核方式支持许多普通的numpy操作,可以处理太大而无法装入内存的数据。

火焰

专为大数据而设计的工具。它基本上是上述库的包装,为各种存储大量数据的方法(例如HDF5或数据库)提供一致的接口,并提供了易于操作,对数据进行数学运算和分析的工具太大而无法容纳到内存中。


4

绝对。当您以这种规模使用数据时,通常使用大数据框架,在这种情况下,python或您使用的任何语言都只是一个接口。参见例如Spark的Python编程指南。您拥有什么样的数据,以及您想如何处理?


3

为了处理如此大量的数据,编程语言不是主要问题,而是编程框架。诸如MapReduce或Spark之类的框架具有与许多语言(包括Python)的绑定。这些框架肯定有许多现成的软件包可以用于数据分析任务。但是最后,这一切都满足您的要求,即您的任务是什么?人们对数据分析任务有不同的定义,其中一些可以使用关系数据库轻松解决。在这种情况下,SQL比其他所有替代方法都要好得多。


2

我认为,在涉及大数据时,语言本身与性能没有任何关系。重要的是:

  • 实际的数据量是多少
  • 您要对其执行什么处理
  • 您要使用什么硬件
  • 您计划使用哪些特定库

无论如何,Python在数据科学界被广泛采用。


2

我一直在使用Anaconda Python 3.4和Pandas搜索10M行数据库以匹配20K的登录凭据。大约需要一分钟。熊猫内部构件充分利用了记忆。也就是说,真正的大数据需要与问题相匹配的处理架构。熊猫只是这个方程式中的粘合剂(逻辑),其他工具也可以做到这一点。R,Scala,Haskell,SAS等可以复制某些逻辑-也许刚好足以更快地回答问题。但是python是一个很好的(最好的)通用工具。您可以在python和大多数其他语言中运行R代码。尽管具有解释性,但是有诸如pypy之类的高性能技术和工具可以使python与基准工具几乎一样快地运行,而仅需花费一点点精力。python有很多可以执行所有操作的库-参见上面的列表。

如果您问是否应该学习和使用python,我的回答是肯定的。文章指出,在同时使用python和python的人群中,使用python的人数比R多。但是,只有一个工具可以解决很少的数据科学问题。它可能成为您的首选工具,但仅此而已-一种工具。正如没有理智的人用锤子盖房子一样,没有理智的数据科学家仅使用一种工具。


0

人们如何将大数据与数据科学和商业智能融合在一起,这很有趣。

首先,大数据意味着“大量数据”,太多的信息使其不适合常规数据库。但是,有时大数据甚至不是适当的“价值”信息,而是文档,图像等。

因此,要处理大数据,我们需要速度。Python不在同盟之列,所以R。但是,如果任务像获取CSV并插入数据库一样容易,那么它就是ETL,我们不需要编程即可做到这一点。

当信息减少时,我们可以应用python,r或您想要的任何东西。甚至Excel。但是,在此阶段,大数据不再是大数据,而是常规数据。

恕我直言,Java更适合大数据(整个链),但是出于某些不切实际的原因,人们将Python作为默认值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.