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

标签 hadoop mapreduce distributed

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

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

最佳答案

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

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

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

关于hadoop - 如何垂直而不是水平拆分数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39483218/

相关文章:

hadoop - 使用 NullWritable 作为 OutputKeyClass,但我没有得到预期的结果

javascript - ES6 Map Reduce 数组通过 Redux 状态的映射和填充变平

java - Hazelcast内部共享f分布式 map

oracle - 保护 Oracle 分布式事务免受网络故障的影响

hadoop - 使用 hadoop/pig 从日志中提取相似用户

java - RESTful Java Web 应用程序中的 Hadoop - 冲突的 URI 模板

java - 使用 Hadoop 时如何解决 NoClassDefFoundError?

hadoop - 在 Hadoop MapReduce 中对多个输出目录使用多个映射器

hadoop - 在Hive中分解结构的多个数组

.net - 选择用于监听响应/保持套接字打开的端口?