【问题标题】:Quick way to read 3 columns of a 1 million column CSV file读取 100 万列 CSV 文件中 3 列的快速方法
【发布时间】:2014-11-07 21:32:39
【问题描述】:

假设我有一个包含 100 万列、数百 GB 的 CSV 文件。

我的目标是尽快将此 CSV 文件的第 1、20 和 50 列的每一行读入内存。

我如何实现这一目标?像这样的东西会起作用,但在速度和内存方面效率低下,因为我需要解析每一列包含 100 万个元素 - 寻找不需要这个的更好的解决方案。

BufferedReader stream = ...;//reader
while ((line = stream.readLine()) != null) {
   String[] keep = line.split(",");
   //keep only 0th,19th,49th elements.
}

【问题讨论】:

  • 面试题?
  • @HovercraftFullOfEels 否。我面临的一个数据挖掘问题,我只想读取一小部分列。
  • 1.通过使用字符串函数从行中查找第 0、第 19 和第 49 个元素的位置,您可以避免创建 50 多个数组项。 2. 您可以一次读取一个字符并通过计算换行符和逗号来打开和关闭解析,但我怀疑这个自定义代码可能会比创建完整的 readLline 字符串要慢。

标签: java csv memory-management io bufferedreader


【解决方案1】:

您可以使用 linux 命令 cut 将这些列检索到单独的文件中,然后改为处理该文件。

cut -c1,20,50 giant.csv >> just3columns.csv

【讨论】:

    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 2013-10-29
    • 2019-07-31
    • 2018-01-12
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多