自动采集推送(札记:从垃圾堆里发现百万价值的数据这是(图))
优采云 发布时间: 2021-09-04 05:18自动采集推送(札记:从垃圾堆里发现百万价值的数据这是(图))
注意事项
亲爱的粉丝大师,好久不见。
这次我为文章添加了一个新的专栏,叫做“笔记”,记录我平时的工作,给冷科技文章加点温度,为即将到来的冬天温暖我的心。
告诉我开始使用大数据的精彩故事。
2017年左右,公司正准备做一款足球比赛预测产品,为平台球迷预测足球比赛的输赢,并提醒他们的返场率。
当时,我们是根据一些规则来做的。比如根据赔率的波动、水位的涨跌、盘口的大小来预测比赛结果。
所以我开发了这样一个系统。但它与大数据无关。
估计当时领导已经给我贴上了大数据的标签。
过了一段时间,老板聘请了一个强大的数据总监,然后自然而然地把我分配到了大数据部门,于是我开始了大数据之路。
后来我尝试了很多方向,比如离线计数、实时计算、推荐、挖掘,发现数学是我的短板,所以我把自己定位为数据开发。
现在,虽然我的部门是大数据部门,但我每天的工作是开发一个大数据平台的后端。
可见,人生处处是折腾。
从垃圾堆中发现价值数百万的数据
这是2013年网上流传的一个小故事。
名牌大学毕业的小伙子,看上去很有思想,很追求。
但令人难以置信的是,他居然去上海的一个高端住宅区申请物业管理工作。更让人不解的是,他的兴趣似乎不仅仅在工作上,因为他经常在非工作时间去社区垃圾场。
他拿着超市里用的扫描仪扫描了垃圾桶上的条码。
很多人看到这个地方可能会认为他疯了。谁可以扫描垃圾?
原来这个年轻人是个有爱心的人。他通过扫描各种包装袋和盒子上的条码,整理出很多有用的数据。
例如,通过他扫描的矿泉水瓶,可以看出这个社区大多数居民喝的是什么水。
同样,他采集了居民喜欢吃什么牌子的油以及他们买什么价格的衣服的数据。
最后,他清楚地了解了整个社区的消费类型和品牌偏好,形成了一份非常详细的报告,并卖给了某家期望数据的相关公司。
这样的报道给他带来了不菲的收入。
如何采集数据
既然数据如此重要,我们如何采集数据?
互联网数据采集
百度、谷歌和必应是世界一流的搜索引擎,它们使用网络爬虫技术到达信息世界的每一个角落,发现和采集相关内容。
将相关信息编入索引后,在编入索引后,用户可以使用一定的规则来查询数据。
网络爬虫的主要工作流程是从一个或多个初始网页的 URL(统一资源定位符)中获取初始网页上的 URL 列表。
然后在爬取网页的过程中,不断地从当前页面中提取新的URL,放入待爬取的队列中,直到满足系统的停止条件
爬虫也会根据一定的策略爬取数据。主要分为三种类型,深度优先、广度优先和最佳优先。
深度优先是沿着一条路线深入挖掘,直到加工完成,然后再加工下一条路线。
这种策略最明显的问题是路径越深,值越低,会大大影响爬行效率。所以一般很少使用这种策略。
广度优先意味着只有在当前级别搜索完成后才搜索下一个级别。一般情况下会选择这个策略,不会过多陷入价值过低的非核心页面。
但对于一些网站local 高价值频道的特殊爬取需求,宽度优先可能不太适合。
最好的优先事项是有针对性的抓取。它会根据一定的算法预测候选网址与目标网页的相似度,或与主题的相关性,选择几个相似度最高的网址进行抓取。选择。
在一定程度上,前两种策略强调的是“量”而不是“质”的情况。
就学爬虫部分,这也是一个很大的话题。只需在此处了解它。
内部数据采集
内部数据采集是内部用户行为日志数据、公司业绩销售数据、各种订单数据等的采集。
内部数据极有可能与企业的整体经营和业绩相关,是各种核心指标的分析来源。
内部数据的采集可以分为两类:Push和Pull
推送模型
在推送模型中,数据的实时性无疑是比较高的,但是数据采集的容量必须大于峰值数据生成的规模,否则如果生产源主动推送的数据无法处理随着时间的推移,它会带来更多更复杂的后续问题。
拉模型
主动在采集端。采集的模块可以按照自己的节奏提取数据。高峰期产生的海量数据会经过一段时间慢慢消化。这样就足以保证采集能力高于数据产生的平均值。
开源实现
Apache Flume 是一个分布式、可靠且高度可用的海量数据采集系统。
Flume 的初始发布版本是 Flume-OG(Origin Generation)。随着Flume功能的扩展,Flume-OG代码工程臃肿,核心模块设计不合理,核心配置不规范等缺点暴露无遗。
为了解决这些问题,Cloudera 在 2011 年完成了 Flume 里程碑式的改变。核心模块、核心配置和代码架构都进行了重构,新的和改进的版本统称为 Flume-NG(Next Generation) )
Flume 有三个核心模块:
Source:负责接收数据的模块
Sink:批量读取和移除通道中的数据,并将读取的内容存储到指定位置
Channel:作为管道或队列,连接源和除尘器。
如上图所示,是Flume的核心架构。
Flume 为我们构建了很多内部默认实现,比如默认文件夹读取、kafka 数据读取、hdfs 写入、kafka 写入、Hbase 写入。
可以直接使用,是一个非常好的data采集工具。
sqoop 主要用于在 Hadoop(Hive)和传统数据库(mysql、postgresql...)之间传输数据,可以将关系型数据库(例如:MySQL、Oracle、Postgres 等)中的数据导入到Hadoop的HDFS,也可以将HDFS数据导入关系型数据库。
此外,阿里巴巴还开源了DataX,设计更巧妙。
采用框架+插件架构构建。数据源读写被抽象成Reader/Writer插件,并入整个同步框架。
关于这些开源技术的精彩演讲将收录在下一个高级系列中。
种树的最佳时间是十年前,其次是现在。