Answers:
需要澄清的是,我觉得OP最初的问题引用可能不是SO型格式的最佳选择,但是python
在这种特殊情况下,我一定会代表。
首先,我要说的是,无论您的数据大小如何,python
都不应成为您的限制因素。实际上,在处理大型数据集时,只有两个主要问题:
1TB
您了解有关时,您开始不得不寻找其他地方进行存储。AWS S3是最常见的资源,并且python
具有出色的boto
库,可帮助您处理大量数据。处理大数据时,您需要了解以下几点:
您可能已经知道大数据的著名V-体积,速度,多样性...因此,Python可能并不适合所有。它与所有可用的数据科学工具一起使用。您需要知道哪种工具对什么目的都有好处。
如果处理大量数据:
现在,您可以在中间阶段使用R / Python,但您会意识到它们已成为整个过程的瓶颈。
如果处理数据速度:
人们在这里尝试R / Python,但这又取决于您想要的并行性和模型的复杂性。
如果您的模型要求将所有数据首先存储到内存中,那么您的模型应该不会很复杂,因为如果中间数据很大,则代码将被破坏。而且,如果您考虑将其写入磁盘,则将面临额外的延迟,因为与RAM相比,磁盘读/写速度较慢。
您绝对可以在大数据空间中使用Python(当然,由于人们正在尝试使用R,所以为什么不使用Python),但是首先要了解您的数据和业务需求。可能会有更好的工具可供使用,并且切记:
您的工具不应决定您如何回答问题。您的问题应确定您使用的工具。
Python有一些非常好的用于处理大数据的工具:
Numpy的内存映射数组使您可以像访问数组一样访问保存在磁盘上的文件。仅将您正在使用的阵列部分加载到内存中。它的用法与普通数组几乎相同。
这两个库提供对HDF5文件的访问。这些文件仅允许访问部分数据。此外,由于使用了用于访问数据的底层库,因此无需将数据加载到python数据结构中就可以完成数据的许多数学运算和其他操作。可能会出现海量,高度结构化的文件,远大于5 TB。它还允许无缝,无损压缩。
有多种类型的数据库可让您存储大数据集并仅加载所需的部分。许多数据库都允许您进行操作,而根本不需要将数据加载到python数据结构中。
这允许高层访问各种类型的数据,包括HDF5数据,csv文件,数据库甚至网站。对于大数据,它提供了围绕HDF5文件访问的包装器,使对大数据集的分析变得更加容易。
这是一个用于在多个处理器甚至多台计算机上以分布式方式运行python代码的工具。这使您可以同时处理部分数据。
它提供了一个普通numpy数组的版本,该数组以多核方式支持许多普通的numpy操作,可以处理太大而无法装入内存的数据。
专为大数据而设计的工具。它基本上是上述库的包装,为各种存储大量数据的方法(例如HDF5或数据库)提供一致的接口,并提供了易于操作,对数据进行数学运算和分析的工具太大而无法容纳到内存中。
绝对。当您以这种规模使用数据时,通常使用大数据框架,在这种情况下,python或您使用的任何语言都只是一个接口。参见例如Spark的Python编程指南。您拥有什么样的数据,以及您想如何处理?
我一直在使用Anaconda Python 3.4和Pandas搜索10M行数据库以匹配20K的登录凭据。大约需要一分钟。熊猫内部构件充分利用了记忆。也就是说,真正的大数据需要与问题相匹配的处理架构。熊猫只是这个方程式中的粘合剂(逻辑),其他工具也可以做到这一点。R,Scala,Haskell,SAS等可以复制某些逻辑-也许刚好足以更快地回答问题。但是python是一个很好的(最好的)通用工具。您可以在python和大多数其他语言中运行R代码。尽管具有解释性,但是有诸如pypy之类的高性能技术和工具可以使python与基准工具几乎一样快地运行,而仅需花费一点点精力。python有很多可以执行所有操作的库-参见上面的列表。
如果您问是否应该学习和使用python,我的回答是肯定的。文章指出,在同时使用python和python的人群中,使用python的人数比R多。但是,只有一个工具可以解决很少的数据科学问题。它可能成为您的首选工具,但仅此而已-一种工具。正如没有理智的人用锤子盖房子一样,没有理智的数据科学家仅使用一种工具。
人们如何将大数据与数据科学和商业智能融合在一起,这很有趣。
首先,大数据意味着“大量数据”,太多的信息使其不适合常规数据库。但是,有时大数据甚至不是适当的“价值”信息,而是文档,图像等。
因此,要处理大数据,我们需要速度。Python不在同盟之列,所以R。但是,如果任务像获取CSV并插入数据库一样容易,那么它就是ETL,我们不需要编程即可做到这一点。
当信息减少时,我们可以应用python,r或您想要的任何东西。甚至Excel。但是,在此阶段,大数据不再是大数据,而是常规数据。
恕我直言,Java更适合大数据(整个链),但是出于某些不切实际的原因,人们将Python作为默认值。