我想对具有60K特征(维度为a.k.a.列)的数据集进行聚类和拆分(使用Hadoop)。此数据集的实例非常少 - 大约100行。我希望根据要素群分割,而不是水平分割数据。例如,如果我得到3个集群,我希望每个集群有20K列和100行,以便在3个不同的节点上运行。
如何实现这种分裂?如果做不到这一点,您是否可以为Hadoop以外的框架提供任何建议以促进此拆分?
答案 0 :(得分:1)
首先:使用这个 tiny 数据集(60k * 100即几兆字节),MapReduce是一个非常糟糕的选择。你获得了巨大的开销,零利益。 如果您的数据适合主内存,请不要使用Hadoop!即使Excel也会更快。
除此之外,显然您可以通过映射切换行和列标识符,从行存储转换为列存储:
def map(key, row):
for column, value in row:
send( column, (key, value) )