项目实现:电商网站日志分析平台(三:etl数据清洗)

本篇为第三篇,剩余请移步主页查看
本篇需要eclipse

三.Etl数据清洗

(1)在eclipse连接Hadoop,通过xshell进行连接,并进行Hadoop可视化
在这里插入图片描述
(2)在eclipse创建Etl mapreduce项目
在这里插入图片描述
(3)在eclipse进行编写NginxEtlMapper 和NginxETLDiver这两个类
在这里插入图片描述
在这里插入图片描述
NginxEtlMapper类代码:

package ETL;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class nginxetlmapper extends Mapper<LongWritable,Text,Text,NullWritable>{
	private Text outputKey = new Text();
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
	String[] words = value.toString().split("");
	String path = words[6];
	outputKey.set(path);
	context.write(outputKey,NullWritable.get());
	}
}

NginxETLDiver类的代码:

import java.io.IOException;

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.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;


public class NginxEtlDriver {
	public static void main(String[] args) {
		if(args.length<2) {
			System.out.println("请输入正确的参数");
			return;
		}
		String day = args[0];
		String hour = args[1];
		Configuration conf = new Configuration();
		try {
			Job job = Job .getInstance(conf);
			job.setJobName("nginx-etl");
			job.setJarByClass(NginxEtlDriver.class);
			job.setMapperClass(NginxEtlMapper.class);
			job.setMapOutputKeyClass(Text.class);
			job.setMapOutputValueClass(NullWritable.class);
			job.setNumReduceTasks(0);
			Path inputPath = new Path("/web/log/" + day + "/" + hour);
			FileInputFormat.addInputPath(job, inputPath);
			Path outputPath = new Path("/web/log/etl/" + day + "/" + hour);
			FileSystem.get(conf).delete(outputPath,true);
			FileOutputFormat.setOutputPath(job, outputPath);
			job.waitForCompletion(true);
			
		}catch(IOException e) {
			e.printStackTrace();
		}catch(InterruptedException e) {
			e.printStackTrace();
		}catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

(4)打包(jar)上传到/home/hadoop(Linux)下
打包步骤:
右键点击包含写的这两个类的包
在这里插入图片描述选择图标为奶瓶的jar file,点击next

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述最后点击browse 点击finish结束

在这里插入图片描述
找到打包后的文件保存位置拖拽到xshell上传,上传成功如图:
在这里插入图片描述在这里插入图片描述
(5)执行jar包 hadoop jar /home/hadoop/web_log/NginxETL.jar 21-12–13 09年月日)

在这里插入图片描述
(6)直接编写web_log_etl.sh脚本,内容如图
命令:

vim web_log_etl.sh

在这里插入图片描述(7)运行脚本使用以下命令:

sh web_log_etl.sh 21-12-13 09

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Heartworm

你的鼓励就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值