大数据项目之数据采集总结(三)
一、数据采集项目总结
1.数据仓库
数据仓库是保存数据,为企业提供数据支持
2.数据的分类
业务数据: 记录的是订单的信息!
行为数据: 记录的是下单的过程发生的信息!
2.1用户业务数据
是什么:
用户使用平台(电商)时产生的和电商的业务紧密相关(购买,下单,支付,收藏,搜索 )的数据!
产生:
用户在使用APP时,产生!
如何存:
关系型数据库
为什么:
事务是区分场景可以使用RDMS和NoSql的核心要素!
RDMS: OLTP(online transaction process)设计,重事务和在线处理!
NoSQL: 移动互联网时代诞生的。注重性能!性能强!
Hive 基于 OLAP(online analitic process)设计,注重查询!
2.2 用户行为数据
是什么:
用于记录用户在使用平台APP时的各种操作,各种行为(启动,评论,收藏等)的数据!
产生:
户在使用APP时,产生!
如何存:
以日志文件的形式存储,其中以JSON格式记录!
为什么:
数据信息密集,价值低,记录周期长,结构复杂。
3.数据示例
3.1 日志数据实例
启动日志:
{ common:” xxx“start:”xxxx“,err:“xxx”,ts:"启动行为发生的时间戳"
}
{"common": {"ar": "370000","ba": "Honor","ch": "wandoujia","md": "Honor 20s","mid": "eQF5boERMJFOujcp","os": "Android 11.0","uid": "76","vc": "v2.1.134"},"start": { "entry": "icon", --icon手机图标 notice 通知 install 安装后启动"loading_time": 18803, --启动加载时间"open_ad_id": 7, --广告页ID"open_ad_ms": 3449, -- 广告总共播放时间"open_ad_skip_ms": 1989 -- 用户跳过广告时点},
"err":{ --错误
"error_code": "1234", --错误码"msg": "***********" --错误信息
},"ts": 1585744304000
}
{"common":{"ar":"420000","ba":"iPhone","ch":"Appstore","md":"iPhone 8","mid":"mid_991","os":"iOS 13.3.1","uid":"418","vc":"v2.1.134"},"page":{"during_time":3336,"item":"3,7","item_type":"sku_ids","last_page_id":"trade","page_id":"payment"},"ts":1583769315209}
事件日志:
{
"common":{}
"actions":[]page:{},
err:{},
ts:xxx
}
{"common": { -- 公共信息"ar": "230000", -- 地区编码"ba": "iPhone", -- 手机品牌"ch": "Appstore", -- 渠道"md": "iPhone 8", -- 手机型号"mid": "YXfhjAYH6As2z9Iq", -- 设备id"os": "iOS 13.2.9", -- 操作系统"uid": "485", -- 会员id"vc": "v2.1.134" -- app版本号},
"actions": [ --动作(事件) {"action_id": "favor_add", --动作id"item": "3", --目标id"item_type": "sku_id", --目标类型"ts": 1585744376605 --动作时间戳}],"displays": [{"displayType": "query", -- 曝光类型"item": "3", -- 曝光对象id"item_type": "sku_id", -- 曝光对象类型"order": 1 --出现顺序},{"displayType": "promotion","item": "6","item_type": "sku_id","order": 2},{"displayType": "promotion","item": "9","item_type": "sku_id","order": 3},{"displayType": "recommend","item": "6","item_type": "sku_id","order": 4},{"displayType": "query ","item": "6","item_type": "sku_id","order": 5}],"page": { --页面信息"during_time": 7648, -- 持续时间毫秒"item": "3", -- 目标id"item_type": "sku_id", -- 目标类型"last_page_id": "login", -- 上页类型"page_id": "good_detail", -- 页面ID"sourceType": "promotion" -- 来源类型},
"err":{ --错误
"error_code": "1234", --错误码"msg": "***********" --错误信息
},"ts": 1585744374423 --跳入时间戳
}
{"common":{"ar":"420000","ba":"iPhone","ch":"Appstore","md":"iPhone 8","mid":"mid_991","os":"iOS 13.3.1","uid":"418","vc":"v2.1.134"},"displays":[{"displayType":"promotion","item":"10","item_type":"sku_id","order":1},{"displayType":"query","item":"10","item_type":"sku_id","order":2},{"displayType":"query","item":"10","item_type":"sku_id","order":3},{"displayType":"promotion","item":"5","item_type":"sku_id","order":4},{"displayType":"query","item":"3","item_type":"sku_id","order":5},{"displayType":"query","item":"7","item_type":"sku_id","order":6},{"displayType":"query","item":"5","item_type":"sku_id","order":7},{"displayType":"recommend","item":"1","item_type":"sku_id","order":8},{"displayType":"query","item":"10","item_type":"sku_id","order":9},{"displayType":"query","item":"6","item_type":"sku_id","order":10}],"page":{"during_time":12161,"item":"2","item_type":"sku_id","last_page_id":"good_detail","page_id":"good_spec","sourceType":"query"},"ts":1583769287899}
日志数据的类型:
启动,曝光,动作,页面,错误!
业务数据要求:
①哪些表 23张表
②表的数据是怎么产生的?
③表是如何被更新的?会更新哪些字段?
④将表导入到HDFS上,使用的是什么策略?为什么?
4.采集平台
4.1 采集的方式
业务数据: 如何导?为什么这么导?
使用sqoop 将 mysql中的数据直接导入到HDFS。
why Sqoop?
- 业务场景符合!
- 批处理场景!
- 开源免费,用户多,社区活跃!
熟悉每一张表的导入方式!
- 每日全量: 导入表的全部数据
select xxx from 表
- 每日增量(只导新增):
select xxx from 表 where (date_format(create_time,'%Y-%m-%d')='$do_date'
- 每日新增和变化(只导当天新增和当天变化的数据):
select xxx from 表
where
(date_format(create_time,'%Y-%m-%d')='$do_date'
or
(date_format(operate_time,'%Y-%m-%d')='$do_date'
全量导和增量导的适用场景?
全量和增量只和数据量相关!
数据量小: 全量,增量
数据量大: 增量
如何区分哪些表的数据量小,哪些表数据量大?
表的性质分:
- 维度表: 描述事实的一个维度!
省份表! 地区表!
用户表!
商品表!
商品分类表!
数据量有限!事实表: 表中记录的数据是一个发生的事实! 3w(who when where) + 数量
下单,支付,评论
随着时间的推移,数据量不断增长!
事实表: 增量
维度表: 全量 、增量
日志数据:如何采集?
搭建两层flume的采集通道!哪两层?
1、日志服务器 --> kafka
2、kafka --> HDFS
4.2 flume和sqoop的区别?
sqoop: 使用场景单一! RDMS和HDFS互相导!批处理!flume: 场景丰富,支持多种数据源,可以传输到多种目的地!流处理!
4.3 为什么要双层Flume?
对接SparkStreaming实时分析,因此必须将数据先采集到Kafka!
优势:
①安全性和公司目前集群的规划设计考虑
②削峰 a) 第一层flume将数据写入到kafka,最终由第二层flume将数据采集到hdfs实现了将 N个 第一层的flume agent进程直接请求HDFS到由第二层 flume agent,统一请求,减少了在并发情况下,NN的请求负载!b) 将数据先写入kafka,由第二层flume从kafka中读取数据,kafka启到缓冲作用即使上游生产能力, 大于 第二层flume的消费能力,也不会丢失数据!
③分层解耦,方便维护
大数据项目之数据采集总结(三)相关推荐
- 客快物流大数据项目(一百零三):快递追踪需求介绍
文章目录 快递追踪需求介绍 前言 背景介绍 设计方案 快递追踪需求介绍
- 大数据项目(三)————电商项目介绍(一)
1.项目介绍 本项目主要用于互联网电商企业中,使用Spark技术开发的大数据统计分析平台,对电商网站的各种用户行为(访问行为.购物行为.广告点击行为等)进行复杂的分析.用统计分析出来的数据,辅助公司中 ...
- 大数据项目之_15_电信客服分析平台_0102_项目背景+项目架构+项目实现+数据生产+数据采集/消费(存储)
大数据项目之_15_电信客服分析平台_01&02 一.项目背景 二.项目架构 三.项目实现 3.1.数据生产 3.1.1.数据结构 3.1.2.编写代码 3.1.3.打包测试 3.2.数据采集 ...
- 大数据项目离线数仓(全 )一(数据采集平台)
搭建用户行为数据采集平台.搭建业务数据采集平台.搭建数据仓库系统.制作可视化报表 本篇博客包括搭建用户行为数据采集平台.搭建业务数据采集平台 搭建数据仓库系统在大数据项目离线数仓(全 )二 制作可视化 ...
- 电商大数据项目-推荐系统实战之推荐算法(三)
电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析 https://blog.51cto.com/6989066/2325073 电商大数据项目-推荐系统实战之推荐算法 https:/ ...
- 大数据项目实战——基于某招聘网站进行数据采集及数据分析(四)
大数据项目实战 第四章 数据预处理 文章目录 大数据项目实战 学习目标 一.分析预处理数据 1)salary 2)city 3)skillLabels 4)companyLabelList.posit ...
- 31 大数据项目之电商数仓(用户行为数据采集)
文章目录 第1章 大数据项目之电商数仓(用户行为数据采集) 第2章 项目需求 2.1 项目需求分析 2.2 项目框架 2.2.1 技术选型 2.2.2 系统架构图设计 2.2.3 系统数据流程设计 2 ...
- 助力工业物联网,工业大数据项目介绍及环境构建【一、二】
文章目录 工业大数据项目介绍及环境构建 01:专栏目标 02:项目背景 03:项目需求 04:业务流程 05:技术选型 06:Docker的介绍 07:Docker的网络 08:Docker的使用 0 ...
- 大数据项目之电商数据仓库系统回顾
文章目录 一.实训课题 二.实训目的 三.操作环境 四. 实训过程(实训内容及主要模块) 五.实训中用到的课程知识点 六.实训中遇到的问题及解决方法 1) 再次格式化NameNode导致无法启动dat ...
最新文章
- 今天注册了CNBLOG
- 送书 | 经典框架Kaldi配套的语音识别实战
- 深度学习总结:GAN 和 conditiaoal GAN
- [ 懒人神器 ] —— OO一键build:.zip - .jar
- 【百度编辑器ueditor】工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等...
- 文东工作室开通微信公众号了!欢迎订阅!~
- 关于OC中的block自己的一些理解(一)
- pv原语模拟实现_并发编程信号量的使用方法和其实现原理
- 工具类TestTools
- 比较高效的表格行背景变色及选定高亮JS
- 【虚拟机ubuntu设置ssh】ssh连不上问题解决方法
- python语言开发环境配置理论_python语言开发环境配置
- geektool的cal命令格式乱了
- Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋
- IEEE格式如何使用在线参考文献生成器
- 【2021年最新版Java校招面试题目合集】
- vb ajax提交post,使用jQuery AJAX将JS数组传递给VB.Net post
- Rethinking the Smaller-Norm-Less-Informative Assumption in Channel Pruning of Convolution Layers简记
- spss 通径分析_使用SPSS线性回归实现通径分析的方法-学习资料.pdf
- 我的世界java版_我的世界Java版1.16.5
热门文章
- Unbuntu 在英文Locale下的输入法安装
- 影视APP下载页面自适应html源码
- 非常适合新手的视频[ps照片美容]高清淅在线
- 安卓开发学习日记第一天(笑)_Android Studio3.6安装_莫韵乐的快乐笔记
- matlab优化边坡参数,基于MATLAB的土质边坡稳定可靠度计算及应用研究
- 量子力学 一 基础4 态空间、对偶与线性算符
- Tiktok、抖音及头条系为什么能引爆?产品力和算法力「AI产品/工程落地」
- Three.js PBR渲染入门教程
- 数易文化毒瘤骗子大曝光!-陈信霖
- 高新技术企业复审认定条件