我在这篇文章中读了 R语言适合大数据 大数据构成 5TB, ,尽管它在提供有关使用此类数据的可行性的信息方面做得很好 R 它提供的信息很少 Python. 。我想知道是否是否 Python 也可以使用这些数据。

有帮助吗?

解决方案

要澄清,我觉得OP的原始问题可能不是So-Type格式的最佳选择,但我一定会代表 python 在这种特殊情况下。

让我首先说,无论您的数据大小如何 python 不应该是您的限制因素。实际上,您将遇到一些主要问题,以处理大型数据集:

  • 将数据读为记忆 - 这是迄今为止大数据世界中最常见的问题。基本上,您无法阅读比拥有内存(RAM)更多的数据。解决此问题的最佳方法是对数据进行原子操作,而不是一次尝试一次阅读所有内容。
  • 存储数据 - 这实际上只是早期问题的另一种形式,到了 1TB, ,您必须开始在其他地方寻找存储。 AWS S3是最常见的资源,并且 python 有奇妙的 boto 图书馆,以促进大量数据。
  • 网络延迟 - 在不同服务之间移动数据将是您的瓶颈。除了尝试挑选共同认同的资源并插入墙壁外,您无能为力解决此问题。

其他提示

处理大数据时,您需要了解几件事 -

什么是大数据?

您可能会意识到大数据的著名V-卷,速度,品种...因此,Python可能并不适合所有人。它与所有可用的数据科学工具一起使用。您需要知道哪种工具有利于什么用途。

如果处理大量数据:

  • 猪/蜂巢/鲨鱼 - 数据清洁和ETL工作
  • hadoop/spark-分布式并联计算
  • mahout/ml -lib-机器学习

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

如果处理数据速度:

  • Kafka/Storm-高通量系统

人们试图在这里r/python,但同样,这取决于您想要的并行性和模型的复杂性。

您想做什么样的分析?

如果您的模型要求首先将整个数据放入内存中,那么您的模型就不应该很复杂,因为如果中间数据很大,则代码将断开。而且,如果您想将其写入磁盘,那么您将面临额外的延迟,因为与RAM相比,磁盘读/写入速度很慢。

结论

您绝对可以在大数据空间中使用Python(绝对可以使用R,因为人们正在尝试使用R,为什么不为Python),但首先了解您的数据和业务需求。可能会有更好的工具可用于同样的工具,并永远记住:

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

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

numpy

Numpy的Memmory映射阵列可让您访问保存在磁盘上的文件,就好像它是一个数组一样。只有您正在积极工作的数组部分需要将其加载到内存中。它可以与普通阵列几乎相同。

H5PY和PYTABLE

这两个库提供了对HDF5文件的访问权限。这些文件允许仅访问一部分数据。此外,由于用于访问数据的基础库,可以在不加载到Python数据结构的情况下完成许多数学操作和其他数据操作。大量,高度结构化的文件是可能的,大于5 TB。它还允许无缝,无损压缩。

数据库

有多种类型的数据库使您可以存储大数据集并仅加载所需的零件。许多数据库允许您完全无需将数据加载到Python数据结构而进行操作。

熊猫

这允许更高级别访问各种类型的数据,包括HDF5数据,CSV文件,数据库,甚至网站。对于大数据,它为HDF5文件访问提供包装器,从而使对大数据集进行分析变得更加容易。

mpi4py

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

dask

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

火焰

专为大数据设计的工具。它基本上是上述库围绕的包装器,它为存储大量数据(例如HDF5或数据库)的各种不同方法提供一致的接口,以及使其易于操作,进行数学操作的工具,并分析数据,并分析数据太大了,无法适应记忆。

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

为了处理此类数据,编程语言不是主要问题,而是编程框架。 MapReduce或Spark等框架与包括Python在内的许多语言具有绑定。这些框架当然有许多用于数据分析任务的现成软件包。但是最后,这一切都符合您的要求,即您的任务是什么?人们对数据分析任务的定义不同,其中一些可以通过关系数据库轻松解决。在这种情况下,SQL比所有其他选择要好得多。

我相信语言本身与大量数据时的性能能力无关。重要的是:

  • 数据实际上有多大
  • 您要在什么处理上执行什么处理
  • 您要使用什么硬件
  • 哪些是您计划使用的特定库

无论如何,Python在数据科学社区中被很好地采用。

我一直在使用Anaconda Python 3.4和Pandas搜索10m行数据库,以匹配20K登录凭据。大约需要一分钟。大熊猫的内部功能充分利用了记忆。也就是说,真正的大数据需要与问题相匹配的处理体系结构。熊猫只是该方程式中的胶水(逻辑),其他工具也可以做到这一点。 R,Scala,Haskell,SAS等可以复制一些逻辑 - 也许足以更快地回答问题。但是Python制造了一个好(最好的?)通用工具。您可以在Python以及大多数其他语言中运行R代码。尽管有解释性,但是有高性能技术和工具(例如pypy)可以使Python运行几乎与基准工具一样快,只需稍微努力。 Python有许多库可以完成所有操作 - 请参阅上面的列表。

如果您询问是否应该学习并使用Python,我的答案是YES文章表明,在使用两者的人中,Python的使用量超过R。但是很少有数据科学问题通过单个工具解决。它可能成为您的首选工具,但这是一种工具。就像没有理智的人只用锤子建造房屋一样,没有理智的数据科学家只使用一种工具。

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

首先,大数据的意思是“很多数据”,因此信息不适合常规数据库。但是,有时大数据甚至不是正确的“价值”信息,而是文档,图像等。

因此,要处理大数据,我们需要速度。 Python不在联盟中,所以R。但是,如果任务与将CSV插入数据库一样容易,那么它是ETL,我们不需要编程来做到这一点。

当信息减少时,我们可以应用Python,R或您想要的任何内容。甚至表现出色。但是,在此阶段,大数据不再大,而是常规数据。

恕我直言,Java更适合大数据(对于整个链),但由于某些不可行的原因,人们将Python视为默认情况。

许可以下: CC-BY-SA归因
scroll top