写测试程序的时候发现了一个问题,就是使用mac打包完的程序,报错如下:
其实内容很简单,就是对一个MR wordcount程序,代码稍后贴,先说下这个问题如何解决:
zip -d /Users/zhangchenguang/Desktop/HadoopPro-0.0.1-SNAPSHOT-jar-with-dependencies.jar META-INF/LICENSE
然后就可以了,如果还不可以,报错 LICENSE 的话,继续删就好了...
zip -d /Users/zhangchenguang/Desktop/HadoopPro-0.0.1-SNAPSHOT-jar-with-dependencies.jar LICENSE
如果想知道原因的话,看下源码就知道了,也很简单。。。。
血坑....凸( ‵o′)凸
wordcount代码如下:
map端:
package com.dtwave.mr;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
/**
* KEYIN:输入kv数据对中key的数据类型
* VALUEIN:输入kv数据对中value的数据类型
* KEYOUT:输出kv数据对中key的数据类型
* VALUEOUT:输出kv数据对中value的数据类型
* @author zhangchenguang
*
*/
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
/*
* map方法是提供给map task进程来调用的,map task进程是每读取一行文本来调用一次我们自定义的map方法
* map task在调用map方法时,传递的参数:
* 一行的起始偏移量LongWritable作为key
* 一行的文本内容Text作为value
*/
@Override
protected void map(LongWritable key, Text value,Context context) throws IOException, InterruptedException {
//拿到一行文本内容,转换成String 类型
String line = value.toString();
//将这行文本切分成单词