第一步:配置pom文件
cloudera https://repository.cloudera.com/artifactory/cloudera-repos/<dependencies>
<dependency>
<groupId>org.apache.Hadoop</groupId>
<artifactId>Hadoop-client</artifactId>
<version>2.6.0-mr1-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.Hadoop</groupId>
<artifactId>Hadoop-hdfs</artifactId>
<version>2.6.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.1.0-cdh5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.Hadoop</groupId>
<artifactId>Hadoop-mapreduce-client-core</artifactId>
<version>2.6.0-cdh5.14.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*/RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
第二步 编写Map代码
1、实例一个实体类,继承Mapper<输入放入key的类型,输入的value的类型,输出放入key的类型,输出的value的 类型>
2 、重写map(LongWritable key, Text value, Context context)
key 每行行首的偏移量
value 每一行的数据
context 上下文对象
3、实现自己业务逻辑的代码
将数据进行拆分,并进行逐一输出。
第三步 编写Reduce代码
1、实例一个实体类,继承Reducer<输入放入key的类型,输入的value的类型,输出放入key的类型,输出的value 的类型>
2、重写reduce(Text key, Iterable values, Context context)
key: 每一个唯一的数据
values:map 输出value的集合
context:上下文对象
3、遍历values(1的list)
进行求和
4、将key 和这个key对应的value输出
第四步 Driver代码流程
//1 、实例一个job
//2、使用job 设置读物数据(包括数据的路径)
//3、使用job 设置MAP类(map 输入和输出的类型)
//4、使用job 设置Reduce类(Reduce 输入和输出的类型)
//5、使用job 设置数据的输出路径
//6、返回执行状态编号