如何垂直而不是水平拆分数据?
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) )
我想聚类和拆分(使用 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) )