gpt4 book ai didi

java - 如何在 HADOOP 运行时生成多个文件名?

转载 作者:可可西里 更新时间:2023-11-01 14:42:04 29 4
gpt4 key购买 nike

我有一些 csv 格式的数据。

例如K1,K2,data1,data2,data3

这里我的映射器将 key 作为 K1K2 传递给 reducer & 值为 data1,data2,data3

我想将此数据保存在文件名为 K1k2(或 reducer 获取的 key )的多个文件中。现在,如果我使用 MultipleOutputs 类,我必须在映射器开始之前提及文件名。但是在这里,因为只有从 mapper 读取数据后,我才能确定 key 。我应该如何进行?

PS 我是新手。

最佳答案

您可以像这样生成文件名并将它们传递给 Reducer 中的 MultipleOutputs:

public void setup(Context context) {
out = new MultipleOutputs(context);
...
}

public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
for (Text t : values) {
out.write(key, t, generateFileName(<parameter list...>));
// generateFileName is your function
}
}

protected void cleanup(Context context) throws IOException, InterruptedException {
out.close();
}

有关更多详细信息,请阅读 MultipleOutputs 类引用:https://hadoop.apache.org/docs/current2/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

关于java - 如何在 HADOOP 运行时生成多个文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702950/

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