gpt4 book ai didi

使用 KeyFieldBasedPartitioner 分割 hadoop 文件

转载 作者:可可西里 更新时间:2023-11-01 14:50:20 25 4
gpt4 key购买 nike

我有一个大文件,格式如下

sample name \t index \t score

我正在尝试使用 Hadoop Streaming 根据示例名称拆分此文件。我提前知道有多少个样本,所以可以指定我需要多少个 reducer。这post正在做非常相似的事情,所以我知道这是可能的。

我尝试使用以下脚本将此文件拆分为 16 个文件(有 16 个样本)

hadoop jar $STREAMING \
-D mapred.text.key.partitioner.options=-k1,1 \
-D stream.num.map.output.key.fields=2 \
-D mapred.reduce.tasks=16 \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \
-mapper cat \
-reducer org.apache.hadoop.mapred.lib.IdentityReducer \
-input input_dir/*part* -output output_dir

这有点管用——有些文件只包含一个示例名称。然而,大部分 part* 文件是空白的,一些 part* 文件包含多个样本名称。

有没有更好的方法来确保每个 reducer 只获得一个样本名称?

最佳答案

仅供引用,实际上有一种使用自定义 OutputFormat 拆分文件的更简洁的方法

link描述了如何真正做到这一点。我最终裁剪了另一个 link对于我的具体应用。总而言之,它只是额外的几行 Java

关于使用 KeyFieldBasedPartitioner 分割 hadoop 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com