gpt4 book ai didi

java - Driver 类中的 KeyValueTextInputFormat

转载 作者:行者123 更新时间:2023-12-01 12:56:44 24 4
gpt4 key购买 nike

在新的API(apache.hadoop.mapreduce.KeyValueTextInputFormat)中,如何指定除制表符(默认)之外的分隔符(定界符)来分隔键和值。

示例输入:
106298345|投降,Raja,CTS,50000,钦奈
106297845|穆拉里,巴拉,TCS,60000,钦奈
106291271|拉贾戈帕尔,拉维,CTS,50000,钦奈
106298616|维克拉姆,达玛,TCS,70000,钦奈
106299100|库马尔,塞尔瓦姆,TCS,90000,钦奈
106299288|桑迪普,克里希纳,CTS,10000,钦奈
106290071|Vimal,皮莱,TCS,20000,钦奈

我将 KeyValueTextInputFormat 指定为:

Configuration conf = new Configuration();
conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", "|");
Job myhadoopJob = new Job(conf);

我的映射器代码如下

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Mapper.Context;

public class KeyValueMapper extends Mapper<Text, Text, Text, Text>
{
@Override
protected void map(Text key, Text value, Context context)throws IOException, InterruptedException {
String mapOutPutValue="";
String line = value.toString();
String[] details=line.split(",");
for(int i=0;i<details.length;i++)
{
if(details[i].equalsIgnoreCase("TCS"))
{
mapOutPutValue=line;
}
}if(mapOutPutValue!="")context.write(key, new Text(mapOutPutValue)); }

}

但是我的映射器类正在打印输入文件中的所有输出。我的映射器类没有按照映射方法中的逻辑过滤输入。

谁能帮我

最佳答案

请在驱动程序代码中尝试以下选项。

conf.set("key.value.separator.in.input.line", "|");

关于java - Driver 类中的 KeyValueTextInputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822428/

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