在大数据的工作中,有很多的挑战。3V(Volume(体积大)、Velocity(增速快)、Variety(多样化))是最受人关注的。谷歌搜索的许多结果都值得一读,几乎都集中在大数据的管理和处理的技术挑战方面。在这篇文章中,我想强调的是,即使是底层的3V基础设施处理的相当完美的情况下,大数据的挑战性仍然存在。
在谷歌,我有机会在一个令人羡慕的工程团队工作。我学会了大规模运行各种服务的多个方面的能力,以及开发和推出令人信服的数据产品。我工作的产品是动态搜索广告,可以自动的进行广告语的搜集设置和优化。给定一个广告主的网站,我们的目标是挖掘相关的关键词,并为每一个关键字自动创建一个广告(广告文本以及广告页面)。我的数据来自各种数据源,经常用于改进我们的产品,有时用于调试。
我们都知道,谷歌处理着网络上大量信息,并使用户能够快速找到相关信息。但是,有多少工程师觉得在谷歌是和数据工作?
在一方面,他们感到有能力处理谷歌收集的大量个人特征行为数据。谷歌的数据基础设施建设是最好的。这是一个存储和处理“大数据”的现代思维的开创地。聚集了高水平的工程师,一个自然的结果就是创建大量的信息丰富的衍生数据集。
在另一方面,我想我们能够更有效和更专注于找寻和理解数据。让我描述一些促成这些低效率的问题。
- 我何如找到我能够使用的数据?在我找到了一些数据之后,我如何掌握这个数据集的内容?
- 关于这些数据,我能找到谁来咨询一些信息?是不是有其他人做着与我一样的内容?
- 我如何排除不期望的数据问题?上游数据的变化能够解释这个问题吗?
- 我如何设置定期生成的垃圾数据收集策略?
现在,我将根据我过去的经验来深入讨论这些问题。
我如何找到和掌握数据?
让我们考虑一个场景:当谷歌内的一个工程师或数据分析要找到相关的数据,可以说,在GFS(google file system)中的Dremel表或SSTable。她需要记住表的名称,并且在谷歌的无数的数据存储中包含它。此外,不同于这些自描述的文件,它是不容易“理解”什么是一个数据集中,以及如何使用它。用户需要通过与指导这个数据的人交谈,或者通过一些其他的替代方式。对比谷歌内的工程师在用于发现和理解数据所花的精力,相对于外部用户在使用谷歌来查找和了解信息的花费。
让我想起了身边类似的情况我自己的失望经历之一。我在谷歌的AdWords小组工作。我需要找到在谷歌的产品中导致相似用户行为的搜索查询信息,特别是搜索和广告。我觉得在搜索和广告团队一定有几个数据集存在。我找了两个广告团队,因为我知道在这个项目中的几个人。但是,事实证明,经过进一步的调查,我因为目标应用的差异而不能使用。不过,我运气不错的从搜索团队找到了类似的信息。我试着重建自己的工作,花了几个月但并没有成功。最近,在我离开谷歌,一个前同事告诉我,他偶然发现一个指向正确的数据,并成功地用它!
当然,围绕着找数据和掌握数据的问题并不是谷歌特有的问题,而是任何一个使用数据去加强市场决策或者产品改进的组织。当然,在谷歌中的工程师有一个比较好的机会通过令人羡慕的内部工具去克服这些问题。(例如代码搜索)
很多相关的数据技术的重点是处理大量的数据和可视化效果变的更好。但是,有没有把重点放在授权用户发现和理解这些数据库中的数据,以准备更可靠和高效的查询和计算。
我认为对这些问题缺乏关注的主要原因是,在查询处理效率和可视化能力方面,这是一种更为具体的措施和表现。另一方面,现在很难清楚地阐明帮助数据用户发现和理解数据的好处。通过这种方式,这不是真正的搜索在网络上,直到谷歌来了,并说明了经济和生产力的收益,在广泛的用户?我相信我们正处于一场类似的数据消费革命的时期。
我该请教谁?
当一个分析师找到一个数据集之后,她需要通过其他分析师和应用程序理解它的用法。经常,要找到如此知识渊博的人员是非常困难的。有很多次我觉得很难,即使在谷歌,以确定我找到能谈这个问题的人。当我找到他们,我感到了那些工程师们的痛苦,他们被打断很多次,只为回答最简单的问题。
举个例子,我被分派到一个任务,迁移一个应用的读取数据,从一个引擎到一个新的高效率的引擎。迁移中最大的部分就是重写查询结构,从新的图表中读取数据。我是少数几个在过去做过这个迁移的人,因此类似的问题必须解决。但是,在维基百科中没有我需要的信息。所以,我不得不很勉强地把自己变成一个非常忙碌的首席工程师,我唯一知道的一个就是得到帮助。我会很感激,如果我能很快找到一个做过类似的迁移工作的人。
在另一方面,我要反复地回答相同的对我处理和维护的数据问题,我试图建立一个维基页面,但还是被问了很多问题。我们都知道,保持维基更新和可用在时间上也是非常具有挑战性的。回想起来,如果我和同事可能错过了几次更新,我不会感到惊讶。
花费多少时间?
然而,分析师有多少时间是花在找数据和理解数据的活动中的?我还没试过测算,我们只是没有方法和工具来测算。但是,这取决于你问的是谁,他们需要使用哪些数据,答案会有很大的不同。一个新人处理一个特定的数据集将花费超过80%的时间在这些任务上。而专家则少得多。然而,专家们却花时间在一遍又一遍的回答其他人的问题。