我有一些文本文件,范围从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?我是什么 不想要写一个函数来找到一个模式,然后等待 处理时间(有很多要写的,更不用说等待回复了)。显然,传统的正常尺寸工作方式 文件不适用于此处。)
答案 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