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

How to split data vertically instead of horizontally?

我想聚类和拆分(使用 Hadoop)具有大约 6 万个特征(维度 a.k.a. 列)的数据集。这个数据集只有很少的实例——大约 100 行。我不想水平拆分数据,而是想根据特征集群进行拆分。例如,如果我得到 3 个集群,我希望每个集群有 20K 列和 100 行,以 运行 在 3 个不同的节点上。

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

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

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

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