gpt4 book ai didi

java - 如何从mapreduce的文本文件中用(|)分割字符串?

转载 作者:行者123 更新时间:2023-12-02 22:03:17 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Splitting a Java String by the pipe symbol using split("|")

(7 个回答)


4年前关闭。




我正在尝试编写一个 mapreduce 程序,该程序说要找到每台售出的电视机的发生情况。
I/P ex-
三星|Optima|14|中央邦|132401|14200
奥尼达|清醒|18|北方邦|232401|16200
阿凯|体面|16|喀拉拉邦|922401|12200
熔岩|注意|20|阿萨姆|454601|24200
禅| super |14|马哈拉施特拉|619082|9200

下面是我写的mapreduce代码——
映射器-

public class TotalUnitMapper extends Mapper<LongWritable,Text,Text,IntWritable> {   
Text tvname;
//IntWritable unit;
public void setup(Context context){
tvname = new Text();
// unit = new IntWritable();
}
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException{
String[] lineArray2 = value.toString().split("|");
if(!lineArray2[0].contains("NA") || (!lineArray2[1].contains("NA"))){
tvname.set((lineArray2[0]));
IntWritable unit = new IntWritable(1);
context.write(tvname,unit);
}
}}

reducer -
公共(public)类 TotalUnitReducer 扩展 Reducer {
public void reduce(Text tvname, Iterable<IntWritable> values, Context context)
throws IOException,InterruptedException{
int sum = 0;
for (IntWritable value : values){
sum+= value.get();
}
context.write(tvname, new IntWritable(sum));
}}

司机-
public class TotalUnit {

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf, "Assignment 3.3-2");
job.setJarByClass(TotalUnit.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(TotalUnitMapper.class);
job.setReducerClass(TotalUnitReducer.class);
job.setNumReduceTasks(2);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job,new Path(args[1]));
job.waitForCompletion(true);
}}

但是我得到了这样的 O/P-
A       1
O 4
S 7
L 3
N 1
Z 2

只有电视名称的第一个字母被打印出来,我不知道为什么。 split 有什么问题吗?
请帮忙,因为我是 Hadoop 的初学者。
提前致谢。

最佳答案

转义该参数:

String d = "Samsung|Optima|14|Madhya Pradesh|132401|14200 Onida|Lucid|18|Uttar Pradesh|232401|16200 Akai|Decent|16|Kerala|922401|12200 Lava|Attention|20|Assam|454601|24200 Zen|Super|14|Maharashtra|619082|9200";

String[] lineArray2 = value.toString().split("\\|");
System.out.println(Arrays.toString(lineArray2));

关于java - 如何从mapreduce的文本文件中用(|)分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46484333/

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