在Python中挖掘大文件(1 GB +)上文本的最佳方法是什么?

时间:2015-01-21 07:36:57

标签: python-3.x large-files

  

我有一些文本文件,范围从1到5 GB。内容是   简单独特的单行。

     

我想:

1. mine text (find patterns, word frequency, clustering etc.).
2. compare text patterns to another large file to find similarities

问题:

  

内存耗尽。 IDE无法应对。即使使用发电机。

问题:

  

使用这些大文件的最佳方法是什么?

     

配料?地图/减少? Hadoop的?使用数据库而不是Python?我是什么   不想要写一个函数来找到一个模式,然后等待   处理时间(有很多要写的,更不用说等待回复了)。显然,传统的正常尺寸工作方式   文件不适用于此处。)

2 个答案:

答案 0 :(得分:1)

我建议使用可以在Python中使用的Apache Spark

  

Apache Spark™是一种用于大规模数据的快速通用引擎   处理

     

使用Java,Scala或Python快速编写应用程序。

     

Spark提供超过80个高级操作员,使其易于构建   并行应用。您可以从Scala和交互式地使用它   Python shell。

file = spark.textFile("hdfs://...")
errors = file.filter(lambda line: "ERROR" in line)
# Count all the errors
errors.count()
# Count errors mentioning MySQL
errors.filter(lambda line: "MySQL" in line).count()
# Fetch the MySQL errors as an array of strings
errors.filter(lambda line: "MySQL" in line).collect()

答案 1 :(得分:0)

我找到了一个适合我的解决方案:pandas library。最适合几GB的数据。它有一些(但不是广泛的)数据处理工具。 它很快。我可以将一个大文件分块并在20-40秒内以批处理模式处理它。这很好(i3处理器,4 GB RAM)。如果我有更多的RAM,它会更快。

这篇文章解释得很好: https://www.chrisstucchio.com/blog/2013/hadoop_hatred.html

相关问题