map实现类.java
package com.wsk.bigdata.mapreduce.mapper;import com.wsk.bigdata.pojo.Info;import org.apache.commons.lang3.StringUtils;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;/*** 文件间的Mapjoin*/public class FileMapJoinMapper extends Mapper
程序入口类.java
package com.wsk.bigdata.mapreduce.driver;import com.wsk.bigdata.mapreduce.mapper.FileMapJoinMapper;import com.wsk.bigdata.pojo.Info;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class MapJoinDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {if(args.length != 3 ) {System.err.println("please input 3 params: product_File page_click_file output_mapjoin directory");System.exit(0);}String productInfo = args[0];String input = args[1];String output = args[2];System.setProperty("hadoop.home.dir", "D:\\appanzhuang\\cdh\\hadoop-2.6.0-cdh5.7.0");System.setProperty("product.info.dir",productInfo);Configuration conf = new Configuration();// 写代码:死去活来法FileSystem fs = FileSystem.get(conf);Path outputPath = new Path(output);if(!fs.exists(new Path(productInfo))){System.err.println("not found File "+productInfo);System.exit(0);}if(fs.exists(outputPath)) {fs.delete(outputPath, true);}Job job = Job.getInstance(conf);job.setJarByClass(MapJoinDriver.class);job.setMapperClass(FileMapJoinMapper.class);// 指定mapper输出数据的kv类型job.setMapOutputKeyClass(Info.class);job.setMapOutputValueClass(NullWritable.class);FileInputFormat.setInputPaths(job, new Path(input));FileOutputFormat.setOutputPath(job, new Path(output));// map端join的逻辑不需要reduce阶段 , 设置reducetask数量为0job.setNumReduceTasks(0);boolean res = job.waitForCompletion(true);}}
程序运行参数 , 分别是产品信息文件路径、页面点击日志数据路径、输出结果路径
- 无需电脑,只需要一台手机 手机连接linux树莓派,使用手机连接树莓派
- 使用Spire.XLS for Java 将Excel表的两列数据互换位置
- 苹果手机录音功能怎么使用
- JVM常见命令之jmap
- JVM命令之- jmap:导出内存映像文件内存使用情况
- Android 5.1 Android音频系统之音量控制详解
- 用计算机键盘方法是,电脑如何用键盘开机_台式电脑键盘开机方法-win7之家
- Ubuntu显示屏幕键盘内容
- bert使用指南
- 临时文件中转服务的搭建-chfs软件的使用