导图社区 大数据采集与预处理思维导图
大数据采集与预处理思维导图,包含爬虫基础、selenium、scrapy、flume、kettle和dataX基本知识。
编辑于2023-05-15 15:48:58 河南大数据采集与预处理
网络爬虫
HTTP/HTTPS
HTTP
超文本传输协议
以明文方式发送内容
http请求过程
请求行
请求方法
请求url(不包括域名)
http协议版本
http响应
响应码
200服务器正常响应
404页面没找到
500服务器内部错误
响应头—包含了服务器对请求的应答信息
如Content-Type,Server,Set-Cookie等
响应体
包含响应的正文数据。如网页的http代码
HTTPS
安全套接层超文本传输协议
即http安全版
http+ssl安全协议
SSL依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信加密
Cookies
定义
网站为了辨别用户身份、进行会话跟踪而储存在本地终端的数据
特点
由网站服务器生成
数据保存在用户本地
访问网站时、浏览器会自动附带并发送给网站的服务器
获取方式
Ajax
介绍
同步提交
当用户发送请求时,当前页面不可以使用,服务器响应页面到客户端,用户才能使用页面
ajax实现异步提交
当页面发送请求时,当前页面还能使用,当异步请求的数据响应给页面后,页面将数据显示出来
通过与web服务器交换数据实现异步更新网页
请求过程
1 创建对象
2 建立连接
3 配置请求信息
4 发送请求
5 响应请求
6 解析渲染网页
爬虫问题
selenium
web应用程序测试的工具,是一种使用模拟浏览器运行的方式
安装步骤
安装浏览器驱动
查看chrome版本
下载chromedriver
配置环境变量
子主题 2
子主题 3
脚本编写流程
1 获取浏览器驱动对象。driver=webdriver .chrome
2 使用get方法获取页面 driver.get(“http://www.taobao.com” )
3 等待页面加载 driver.implicitly_wait(10)
4 操作页面元素 driver.find_elements(By.CLASS_NAME,”feed-default-nav-item”)
查询元素
例子
查询元素的方式
页面交互
爬虫框架scrapy
概念 为了爬取网站数据,提取结构化数据而编写的应用框架
应用程序 应用于数据挖掘,信息处理,存储历史数据等程序中
特点
1 基于python
2快速高层次的屏幕抓取和web抓取
3 提取结构化的数据
用途 数据挖掘,监测,自动化测试
流程描述
1 爬虫(Spider)构造一个请求(Request)对象,提交给引擎
2 引擎将请求安排给调度器
3 引擎从调度器获取即将执行的请求
4 将请求发送给下载器下载页面
5 下载器生成一个响应(response)对象并将其发送给引擎
6 引擎将响应发送给爬虫进行处理
7 爬虫将抽取到的一个数据实体(Item)和新的请求发送给引擎
8 引擎将从爬虫获取到的item发送给项目管道(item pipelines)项目管道实现数据持久化等功能 将新的请求发送给调度器 ,再从第2步开始重复执行,直到调度器没有更多的请求,引擎关闭该网站
requests
介绍
易用的HTTP库 、底层基于Python官方库urllib,但其更良好的API设计更适合人类使用
请求方式
get请求
基本语法
常用参数
post请求
基本语法
常用参数
XPath
介绍
XML路径语言、是在XML文档中查找信息的语言。HTML与XML结构类似,因此xpath也可以在html中查找信息
路径表达式
带谓语的XPATH路径表达式
Kettle
etl
用来将数据从来源端经过萃取、转置、加载至目的端的过程。这一此常用于数据仓库但不局限于数据仓库
主要环节
数据抽取
全量抽取
类似于数据迁移和数据复制,他将数据源的表或视图原封不动的从数据库抽取出来,并转换为etl工具可以识别的格式
增量抽取
抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。增量抽取应用更广
增量方式
触发器
oracle变化数据捕捉
时间戳
日志对比
全表对比
全表删除插入
数据转换
pan
作用
对抽取处数据 进行数据转换和数据加工
数据加载
组件类型
输入
输出
转换
应用
流程
查询
连接
统计
映射
脚本
简述
transformation
完成针对数据的基础转换
job
完成对整个工作流的控制
组成单元- entry
job 和 transformation的区别
1 作业是步骤流,转换是数据流。这是作业和转换的最大区别
2 作业的每个步骤必须等上一个步骤跑完了后面的步骤才会执行。转换会一次性把所有控件全部先启动,然后数据流会从第一个控件开始,一条记录一条记录的流向最后的控件
核心组件
spoon.bat
是一个图形化界面,可以让我们用图形化方式开发转换和作业
Kitchen.bat
利用kitchen可以使用命令调用由spoon编辑好的job
Carte.bat
轻量级web容器,用于建立专用,远程的server
pan.bat
利用pan可以用命令行的形式执行由spoon编辑的转换和作业
子主题 2
任务调度监控
调度方式
操作系统级别的调度器
子主题 2
任务监控方式
邮件通知
任务调度时,可设置邮件组件将日志传输到邮箱
日志表
大部分kettle组件能狗输出以文本行的形式的日志信息
性能调优
JVM调优
调整JVM大小进行性能调优,修改kettle中定时任务的kitchen和Pan
组件调优
调整提交记录数大小进行优化
调整记录集合里的记录数
尽量使用数据库连接池
尽量提高批处理的commit size
尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流)
尽量缩小输入的数据集大小(数据更新也是这个目的)
尽量不要使用kettle里的calculate,尽量使用sql,其次procedure
远程数据库用文件+FTP方式传数据,文件要压缩
sql调优
where子句的连接顺序
删除全表用truncate代替delete
尽量多使用commit
用not exists代替not in
优化group by
有条件的使用union-all代替union
分离表和索引
DataX
概念
是一个异构数据源离线同步工具,致力于实现包括各种数据库(mysql,oracle,等)hdfs,hive,odps,hbase,ftp等各种异构数据源之间稳定高效的数据同步功能
特点
在异构数据库与文件系统之间高速交换数据
采用Framework+Plugin架构构建,Framework处理了缓冲、流控、并发、上下文加载等大部分的技术问题,提供了简单的接口与插件交互,插件仅需实现对数据处理系统的访问
运行模式:stand-alone
数据传输过程在单进程内完成,全内存操作,不读写磁盘,也没有IPC
开放式框架,开发者可以在极短的时间内开发一个新的插件以快速支持新的数据库/文件系统
架构设计
reader:数据采集模块
负责将数据从异构数据库中采集出来,将数据发送给Framework
writer:数据写入模块
负责不断向framework取数据,写入至目的端
framework:连接reader与传输管道,并处理缓冲,流控,并发,数据转换等核心技术问题
调度决策思路
flume
概念
分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具
基本架构
agent
组成部分
source
agent的输入口 负责接收各种类型、各种格式的日志数据 包括avro、exec、jms、spooling、directory、netcat、http等
channel
概念
位于source和sink之间的缓冲区.因此,channel允许source和sink运作在不同的速率上。channel是线程安全的,可以同时处理几个source的写入操作和sink的读取操作
类型
memory channel
把缓存读取到内存队列中,优点:读写速度快 缺点:容量有限,服务一旦挂掉数据就会丢失
file channel
把缓存读取到本地文件系统中,每条读写条数都会有checkpoint记录优点:数据持久化
sink
概念
agent的输出口 负责不断轮询channel中的事件并批量移除事件、根据配置文件的配置将事件写入到hdfs等存储系统,或发到另一个agent中
类型
Avro sink
配套Avro source使用 作为sink时都是实现了rpc的客户端,去连接Avro source服务端,自动把event转换为 Avro event。适合追求速度的场合
hdfs sink
hive sink
该接收器将包含分隔文本或json数据的事件直接流到hive表和分区
事件是由hive事务编写
一旦一组事件被提交给hive,它们就立即对hive查询可见
flume将要流入的分区可以预先创建,也可以在减少分区时创建
数据传输基本单元
event
header
存放event的一些属性,为map结构
body
存放该条数据,以字节的形式存放
复杂流模型
每个服务器部署一个flume采集日志,传送到一个集中收集日志的flume,再由此flume上传到hdfs、hive、hbase等进行日志分析
flume的优点
可靠性
flume使用事务保证event的可靠传输
source和sink对channel提供的每一个event数据都封装一个事务用于存储和恢复,保证了数据流的集合在点对点之间可靠的传输
在多层架构中,前一层的输出口sink和下一层的输入口source都会有事务运行保证数据可以安全的传输到下一层的channel
可恢复性
event数据会在channel里面缓存用来在传输失败时恢复数据
flume支持保存在本地文件系统中的”文件channel”,也支持保存在内存中的”内存channel”,”内存channel”速度快,但如果agent挂掉内存中缓存的数据就会丢失
flume配置实践
flume收集hive日志数据
将日志数据存储在hdfs中
拦截器
工作在source和channel之间 在source接收到数据后,拦截器基于自定义规则删除或转换相关事件
种类
时间戳拦截器
将时间戳插入到flume事件报头中
主机拦截器
主机拦截器插入服务器ip地址或者主机名,agent将这些内容插入到事件的报头中。事件报头中的key使用hostheader配置,默认是host
静态拦截器
将k/v插入到事件的报头中
正则过滤拦截器
过滤不需要的日志,也可以根据需要收集满足正则条件的日志
拦截器顺序从上到下
选择器
将source中的数据有规则的分发给多个channel
种类
复制选择器
数据完整的发送到每一个channel
默认是复制选择器
多路复用选择器
使用header字段的值作为数据的分流的判断依据
自定义选择器
实现接口,自定义分流的规则
导论
数据类型
数据结构
结构化数据
半结构化数据
非结构化数据
描述事务的角度
衍生数据
原始数据
大数据流程
数据采集
数据预处理
数据清洗
定义
消除数据中所存在的噪声以及纠正不一致的错误
清洗过程
填补遗漏数据
平滑噪声数据
回归1
分箱法(Bin)
聚类分析
识别/除去异常值
方法
缺失值处理
噪声数据清除
一致性检查
数据集成
将来自多个数据源的数据合并在一起构成一个完整数据集
集成方式
ods/dw
中间件
数据源
数据网络
集成模式
联邦数据库
数据仓库
中介者
集成技术
模式识别和对象匹配
模式(列)有相似
对象(行)有相同特征
冗余处理
数据值和冲突的监测和处理
数据变换
数据平滑
去噪,将连续数据离散化
数据聚集
对数据进行汇总
数据概化
用高层概念替换,减少复杂度
数据规则化
使数据按比例缩放
属性构造
提高数据的准确性
将数据从一种格式转换为另一种格式的数据,目的是对数据进行规格化操作,用于将数据转换成适合数据挖掘的形式
数据规约
在尽可能保持数据原貌的情况,最大程度地精简数据量
规约类型
特征规约
从原有特征删除不重要或不相关的特征
样本规约
从数据集中选取有代表的样本的子集
特征值规约
特征值离散化技术
规约策略
维规约
减少所考虑的随机变量或属性个数
数量规约
用样本数据替换原数据
使用模型
数据压缩
使用变换,以便得到原数据的规约或压缩表示
规约方法
维规约
数据压缩
无损压缩
有损压缩
数值规约
离散化
概念分层
数据储存
数据挖掘与分析
数据可视化
最可能的值
同类样本的属性均值或中位数
中心度量
常量填充
人工填写
忽略元组