【问题标题】:Map Reduce split dataset into columns将 Reduce 拆分数据集映射为列
【发布时间】:2014-06-11 06:39:40
【问题描述】:

我有一个 TSV/CSV 数据集(超过 100gb),我需要将数据集拆分为列数据集。一个例子:一个 n 行 m 列的输入数据集需要输出 m 个数据集,每个数据集有一列 n 行。

输入 1 个数据集

a  b  c
x  y  z
1  v  a

输出 3 个数据集

dataset1 : a x 1
dataset2 : b y v
dataset3 : c z a

【问题讨论】:

  • 您的输出需要在文件中,因为 100Gb 很难放入内存中。

标签: java python csv mapreduce dataset


【解决方案1】:

基本原则是

  • 打开输入文件进行读取
  • 使用您最喜欢的 TSV/CSV 解析器读取第一行
  • 那会给你m
  • 打开m 文件进行写入
  • ith 行的值写入ith 文件中
  • 再读一行

一个实现示例是:

import csv
with open('input.csv', 'r') as f:
    csvreader = csv.reader(f)
    files = [open("output" + str(i), 'w') for i in range(len(csvreader.next()))]
    f.seek(0)
    for line in csvreader:
        for i, value in enumerate(line):
            files[i].write(value)
            files[i].write(' ')

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    相关资源
    最近更新 更多