天天在做大数据,你的时间都花在哪了?
我每天都在思考,思考很重要,是一个消化和不断深入的过程。
正如下面的一句话:
我们从出生开始如果没思考过人生本身这件事情,一切按照社会的习惯前行,那人生是没有意义的。因为你连人生都没有想过。
那么延生出来,我们有没有想过大数据本身?
大数据到底是在做什么,为什么我做了这么多年的大数据,总是做不完呢?
大数据本质是:随着科学技术发展,更多的数据能够被存储了,能被分析了。所以有了大数据的概念。
机器学习的本质是:随着数据变多了,量变导致质变,数据足够大后其内部的隐含的规律会越来越精确和完整。机器学习则是将数据内存存在的这种隐含关联给挖掘出来的一项技术。
大数据最消耗工作量的地方是哪里呢?目前百分之八十的工作量都在于数据收集 清理和校验。 这个工作本身并不难,但是真的很繁琐,很费力。
我们天天感叹:
数据在哪里?如何收集
数据要怎么进行清洗
无效数据太多,如何去除
而让我们心灰意冷的是:当一个新的需求来临时,现有的数据形态似乎不能满足需求,我们又要在现有的数据堆里,重新走数据收集,清理,校验的流程。
这似乎是一种诅咒,如同可怜的西西弗斯,被判要将大石推上陡峭的高山,每次用尽全力, 大石快要到顶时,石头就会从其手中滑脱,又得重新推回去,幹著无止境的劳动。
大数据目前遇到的最大技术难点是什么1、是海量数据的ad-hoc查询
当Hadoop刚刚兴起,我们可以通过它来操控越来越廉价的PC服务器价格,于是一种暴力弥漫了整个生态:
我们因为突然有了强大的算力,这就好比一个穷人突然有了一笔很大的钱。我们开始让强大的算力驾着最低效的程序去跑数据,这是批处理时代的悲哀。
但是随着查询效率要求越来越高,我们不得不被迫做出改变。还记得我们以前的日志都是简单的Raw文本吗? 现在各种存储的格式慢慢开花结果:
Parquet, 数砖公司大力发展的一个存储技术
ORC, Hive 常见的一种存储格式
CarbonData, 华为推出的一套可支持PB级别的数据格式
总之,我们似乎没有找到一个奇妙的技术解决查询的问题,只能做某种折中:
为了加快查询速度,数据存储慢慢从早期的raw文本转为具备向量化,带索引,支持特定编码和压缩的列式存储结构,当然这种通过调整存储结构的方式必然以消耗数据进入时的时间和资源为代价。
也就是我们在存储和查询之间做了妥协。
如何让苦力干的更少前面我们提及了,我们可能80%的工作都花在了数据的采集,清洗和校验上了。但是我们该如何压缩这部分的工作呢?
流式计算
流式计算上层建筑
让所有的计算流动起来,就会让下面的事情变得简单:
我们可以在已经流动的数据中的任何一个环节引入一个新的支流。当我要获取数据时,我做的本质其实就是 连接两个或者多个节点,并且在其中对数据进行转换。就如同河水,我们可以很方便的开一个支流,将水引入灌溉新的额农田。
而且我们希望流式计算的实现是结合了流式和批量语义的。为什么呢?
看看华为在Storm上做的StreamCQL,就知道,很多情况实时流式是很有局限的,因为未来我们在流式上能做的事情会非常多:
数据处理
Ad-Hoc查询
机器学习
报表
存储输出
这就需要一定的灵活性,因为只有在数据集上,才会有譬如Ad-Hoc查询,才能高效的进行存储,才能适应一些机器学习算法。单条数据很多情况下,是没有太大意义的。
这块我一直是Spark Streaming的支持者。数据天生就是流式的
那为啥我们需要一个流式计算上层建筑? 我们回顾下问题,数据的ETL过程是个苦力活,消耗掉大量程序员的工作时间,那么为了减少这种时间,我们有两个办法:
将做些任务分散出去,使得每个人都可做,那么在总量不变的情况下,单个人就会变少了
提高每个人的工作效率
流式计算构建了整个基础,而其上的框架则使得上面两点成为可能。这里我依然推荐我现在正在做的一个开源项目: StreamingPro 。未来我们还会有一个更通用的基于流式计算的采集程序,敬请期待。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/57445.html
开源程序员相关文章
- 使用时间序列数据预测《Apex英雄》的玩家活跃数据
- VBA代码应用示例:基于时间筛选数据
- SPSS时间序列ARIMA、指数平滑法、模型检验分析汽车销量数据
- R语言ggplot2科研数据数据可视化实用手册~第八章热图(heatmap)
- Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测|附代码数据
- 数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法|附代码数据
- R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列|附代码数据
- PYTHON 用几何布朗运动模型和蒙特卡罗MONTE CARLO随机过程模拟股票价格可视化分析耐克NKE股价时间序列数据|附代码数据
- MongoDB使用mongoexport和mongoimport命令,批量导出和导入JSON数据到同一张表的实例
- mysql通过group by分组取最大时间对应数据的两种有效方法
- mysql找出重复数据的方法详解数据库
- 数据导入Oracle:实现最佳效率(数据导入oracle)
- 类型MySQL 中的时间类型深度探索(mysql数据时间)
- 从Oracle 转换为INT的数据类型转换(oracle转int)
- 数据可视化看河南暴雨有多大:一天时间包揽全国城市降水量前10
- 时间解决Java中Redis数据过期问题(redisjava过期)
- 天天在做大数据,你的时间都花在哪了?
- ?MSSQL最大容量:数据处理能力之无限可能(MSSQL能处理多少数据)
- MySQL中RR如何实现数据复制和高可用性(mysql中rr)
- 海量数据Oracle如何实现几亿数据的快速关联(oracle几亿数据关联)
- MySQL连接3366,让你的数据更加安全(c mysql 3366)
- 如何在 MySQL 中查询包含指定数据的行(mysql 中包含)
- MySQL数据全部呈现不再分页(mysql不分页显示)
- Redis缓存解放字典表数据(redis缓存字典表数据)
- MySQL动态创建表,数据分表的存储过程