필자는 쉼표로 구분 된 파일을 여러 열로 가져 와서 회사 이름, 고객 상호 작용 결과 및 발생한 횟수를 가져와야하는 프로젝트가 있습니다.
그럼 좋은 상호 작용에 나쁜 상호 작용의 비율을 계산해야합니다. Hadoop과 Java를 사용하고 있습니다.
나는 작업 맵과 Reduce을 사용하여 회사 이름과 좋고 나쁜 상호 작용의 수를 알려줍니다.하둡 (Hadoop) 백분율 얻기
내 문제는 하둡이 나에게 백분율을 나누어 줄 수있는 방법을 찾을 수 없다는 것입니다.
대부분의 회사에는 나쁜 상호 작용이 없습니다.
여기 나의
public class TermProjectReducer extends Reducer < Text, IntWritable, Text, IntWritable >
{
private IntWritable result = new IntWritable();
@Override
public void reduce(Text key, Iterable <IntWritable> values, Context context) throws IOException, InterruptedException
{
int sum = 0;
for (IntWritable val : values)
{
sum += val.get();
}
if (sum > 0)
{
result.set(sum);
context.write(key, result);
}
}
}
이 내가 지금 무엇입니까 무엇의 예입니다 감소되어 내 MAPP
다음public class TermProjectMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String[] columb = value.toString().split(",");
String companyName = columb[5];
String companyResponseToConsumer = columb[12];
String lookfor = "closed without relief";
if (companyResponseToConsumer.toLowerCase().contains(lookfor)) {companyResponseToConsumer="Bad";}
else {companyResponseToConsumer="Good";}
//System.out.println(companyResponseToConsumer);
if (companyName != "" && companyResponseToConsumer != "")
{
word.set (companyName + " " + companyResponseToConsumer);
context.write(word, one);
}
}
}
입니다.
AMERICAN EAGLE MORTGAGE COMPANY,Good, 4
AMERICAN EQUITY MORTGAGE,Good, 26
AMERICAN EXPRESS COMPANY,Bad, 250
AMERICAN EXPRESS COMPANY,Good, 9094
AMERICAN FEDERAL MORTGAGE CORPORATION,Bad, 1
AMERICAN FEDERAL MORTGAGE CORPORATION,Good, 3
AMERICAN FINANCE HOUSE LARIBA,Good, 3
AMERICAN FINANCIAL MORTGAGE COMPANY,Good, 3
Text
의 감속기의 값으로DoubleWritable
을 사용하는 것이 좋습니다? –예, MapReduce 및 Java가 필요합니다. – Keg
좋아, 당신의 감속기는 단어 수를하고 있습니다. 'Good'과'Bad' 만 카운트를 분리하려고 시도한 것은 무엇입니까? –