python中的数据处理实现
dampr的Python项目详细描述
dampr-纯python数据处理
dampr用于单机数据处理:它本机不在核心,支持map和reduce边连接、关联reduce合并器,并为构建数据流dag提供高级接口。
它相当快,容易开始,并按核心线性缩放。它没有外部依赖关系,因此非常轻量级,安装起来也很容易。它对数据分析有合理的repl支持,尽管有更好的工具来完成这项工作。
功能
- 自包含:无外部依赖项,安装简单
- 高级api:易于计算
- 核心外:可扩展到100s GB到tbs的数据。不用担心内存不足的错误!
- 相当快:线性缩放到机器上的核心数
- 功能强大:为复杂的工作流提供许多高级连接和其他功能
设置
pip install dampr
或
python setup.py install
API
示例
查看examples
目录以获得更完整的示例。
类似地,这些测试的目的也是相当可读的。您可以在tests
目录中查看它们。
示例-wc
importsysfromdamprimportDamprdefmain(fname):wc=Dampr.text(fname) \ .map(lambdav:len(v.split())) \ .a_group_by(lambdax:1) \ .sum()results=wc.run("word-count")fork,vinresults:print("Word Count:",v)results.delete()if__name__=='__main__':main(sys.argv[1])
为什么不使用dask进行数据处理呢?
达斯克很棒!我强烈推荐它用于不需要复杂连接的快速分析和数据集!
然而。
dask实际上是用于内存计算和通过数据帧等接口进行更多分析处理。虽然它确实有一个合理的数据处理bag
实现,但是它缺少一些重要的特性,比如跨大型数据集的连接。在尝试更复杂的过程时,当处理大于内存的数据集时,我经常遇到OOM错误。
从这个意义上说,dampr正试图弥合单一机器和重型系统上复杂数据处理的鸿沟,以便于使用。
为什么不使用pyspark进行数据处理呢?
Pyspark很棒!我强烈推荐它用于超大数据集和集群计算!
然而。
Pyspark需要大量的设置才能真正开始。它是“轻量级”的对立面,真正适合大规模生产部署。我个人不喜欢用它来证明概念或一次性的东西;它只需要稍微调整一下就可以得到你需要的东西。