如何垂直分割数据而不是水平分割数据?

时间:2016-09-14 05:44:39

标签: hadoop mapreduce distributed

我想对具有60K特征(维度为a.k.a.列)的数据集进行聚类和拆分(使用Hadoop)。此数据集的实例非常少 - 大约100行。我希望根据要素群分割,而不是水平分割数据。例如,如果我得到3个集群,我希望每个集群有20K列和100行,以便在3个不同的节点上运行。

如何实现这种分裂?如果做不到这一点,您是否可以为Hadoop以外的框架提供任何建议以促进此拆分?

1 个答案:

答案 0 :(得分:1)

首先:使用这个 tiny 数据集(60k * 100即几兆字节),MapReduce是一个非常糟糕的选择。你获得了巨大的开销,零利益。 如果您的数据适合主内存,请不要使用Hadoop!即使Excel也会更快。

除此之外,显然您可以通过映射切换行和列标识符,从行存储转换为列存储:

def map(key, row):
    for column, value in row:
        send( column, (key, value) )