2、Hadoop离线项目之数据清洗

本文介绍了企业级大数据项目开发流程,以Hadoop离线项目为例,讲解了数据清洗、MapReduce的开发与测试,包括手动造数据、使用Maven构建项目、MapReduce的开发和服务器测试。此外,还涉及到了Hive用于完成数据的统计分析。
摘要由CSDN通过智能技术生成

企业级大数据项目开发流程

    项目调研:技术?业务?【对业务很了解】
            产品经理、非常熟悉业务、项目经理

    需求分析:明确做什么 做成什么样子的(做东西不要局限于某个技术)
            用户提出来的:显示【实现较为简单】
            隐式的需要自己来实现

    方案设计
           概念设计(模块,模块中有哪些功能点)【国内一般都是后补详细设计也就是设计文档】
           详细设计(具体到所有功能的实现,本套系统用哪些技术来搞定,每个功能点涉及到哪些表哪些模块,表的字段方法名接口等都要定义好)
           系统设计(能否扩展,能否容错,可不可以定制化,监控告警等等都是这里的)

    功能开发【文档代码化】
           开发:代码层次
           测试【本地环境】:单元测试    CICD【自动测试所有的单元测试,测试没问题后才可以上线】 

    测试【测试人员的测试】(测试环境)
           功能
           联调【设计到很多团队的调试】
           性能【压力测试,特别是大数据这种,需要调整一些性能资源】
           用户【用户测试为试用,主要是用户的体验】

    部署上线
           试运行【新的和老的系统都在跑,比如新老一块跑两个月,比较两者的稳定性和差异】
           正式上线 【灰度  一般一年或者一年半(会可能用到容器docker之类,开箱即用的;比如需要用到一些相同环境的机器)】

    后期
           还有项目二期,三期,四期,运维保障,功能开发,bug修改【也就是按照之前都流程都走了一遍】

企业级大数据应用分类

    数据分析
           自研【自己研发的一个平台,基本都是基于开源框架进行二次开发】
           商业【】

    搜索/爬虫 elk hbase soler luncen

    机器学习/深度学习 【数据平台基本都有】

    人工智能

    离线:批处理

    实时:流处理

基于Maven构建大数据开发项目

手动造数据

#coding=UTF-8

import random
import time

search_engine = [
	"baidu",
	"google",
	"biying",
	"sougou",
	"360",
	"xunlei",
	"yahu",
]

ip_slices = [132,156,124,10,29,167,143,187,30,46,55,63,72,87,98,168]

http_referers = [
	"http://www.baidu.com/s?wd={query}",
	"https://www.sogou.com/web?query={query}",
	"http://cn.bing.com/search?q={query}",
	"https://search.yahoo.com/search?p={query}",
]

country = [
	"CN",
	"CO",
	"CH",
	"AE",
	"US"
]

level = ["E","W","I","D"]

domain_name = [
	"v2.go2yd.com",
	"sdf.dslkj.com",
	"wert.liyu.com",
	"wangwu.liujia.com",
	"shabi.com",
	"uouo.ojp.com"	
]

http_referers = [
	"http://v1.go2yd.com/user_upload/{keyword}",
	"http://sdf.dslkj.com/user_selct/{keyword}",
	"http://wert.liyu.com/user_test/{keyword}",
	"http://wangwu.liujia.com/user_upload/{keyword}",
	"http://shabi.com/user_de/{keyword}",
	"http://uouo.ojp.com/user_upload/{keyword}",
]

keyword_mp4 = [
	"1531633977627104fdecdc68fe7a2c4b96b2226fd3f4c.mp4_bd.mp4",
	"6244563542345265dfbssb54gr3d4h5v54h4355xg4g4f.mp4_db.mp4",
	"4562342652345345bsdbds64gf3h6f4x95g5643ft3t8k.mid",
	"2656345557534787rthwjj78rf4g6fe4frt5rf44f5tg4f5tf.www4",
	"8969576565675647fgtsrt45thb65675h556543gt46h54n644.mp5"
]

def sample_search_engine():
	return random.sample(search_engine,1)[0]

def sample_country():
	return random.sample(country,1)[0]

def sample_level():
	return random.sample(level,1)[0]
	
def sample_ip():
	slice = random.sample(ip_slices , 4)
	return ".".join([str(item) for item in slice])
	
def sample_domain_name():
	return random.sample(domain_name,1)[0]
	
def sample_http_referers():
	if random.uniform(0, 1) > 0.2:
		return "-"
		
	ref_str = random.sample(http_referers,1)
	key_str = random.sample(keyword_mp4,1)
	return ref_str[0].format(keyword=key_str[0])
	


def generate_log(count = 10):
	time_str = time.strftime("%d/%b/%Y:%H:%M:%S", time.localtime())
	
	f = open("/home/hadoop/data/test.log","a+")

	while count >= 1:
		query_log = '{se}\t{co}\tA\t{le}\t[{local_time} +0800]\t2\t{ip1}\t-\t{ip2}:80\t0\t{dn}\tGET\t{hr}\tHTTP/1.1	-	bytes 13869056-13885439/25136186	TCP_HIT/206	112.29.213.35	video/mp4	17168\t{num}\t-:0	0	0	-	-	-	11451601	-	"JSP3/2.0.14"	"-"	"-"	"-"	http	-	2	v1.go2yd.com	0.002	25136186	16384	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	1531818470104-11451601-112.29.213.66#2705261172	644514568'.format(se=sample_search_engine(),co=sample_country(),le=sample_level(),local_time=time_str,ip1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值