文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

s18ra3

http://fabua.ksxb.net/coms18ra3/

相关列表
文章列表
  • 暂无文章
推荐文章
联系方式
  • 联系人:李女士
  • 电话:18539953790
交互式大数据处理模型-Google Dremel
发布时间:2024-12-10        浏览次数:2        返回列表
交互式大数据处理模型-Google Dremel 数据处理 在大数据时代的背景下,数据是显得如此丰富和可爱。而理所当然的,大数据的存储和计算就是其相关业务的两大亮点了。总结业界一些处理大数据的方式,做了如下比较。
Figure: Column-striped representation of the sample data

从上面可以看出,r1和r2的数据被拆分成字段存储,字段名称保持了嵌套结构。除了记录中的value以外,每个拆分后的字段还多了r和d两个量。这两个量是Google结合Protocol Buffer定义的辅助量:repetition levels & definition levels。值得注意的是,为了保证数据能够按照原有的结构重新组装成记录,在拆分存储字段时,会按照schema的定义,给没有定义的字段添加NULL值。这样做虽然浪费了一些存储空间,但却在另一方面为高效计算提供了条件,所以存储方面的浪费就不成问题了。况且,在实际应用中,Google也在存储细节上做了一些优化,具体不表。

交互式大数据处理模型-Google Dremel

  • Repetition levels: 指定当前的value在schema中哪个级别的repeated字段里重复了(It tells us at what repeated field in the field's path the value has repeated)。
  • Definition levels: 指定当前value所在的路径p上,有多少可以不定义的字段有记录了,即有多少repeated和optional字段存在(It specify how many fields in path p that could be undefined(repeated & optional) are actually present)。

举例来说。对于r值,我们选取Name.Language.Code字段'en-us'是Code字段第一次出现在r1中,其路径Name.Language.Code上没有字段重复,则其r=0'en'是Code字段重复出现,其路径Name.Language.Code上的Name和Language字段是repeated属性的(Code字段是required属性的,不能被算在r内,则r=2。对于d值,我们选取Name.Language.Country字段'us'所在的路径为Name.Language.Country,而Name字段,Language字段和Country字段都是undefined类型(optional或者repeated属性)的,所以'us'对应的d=3;第一个'NULL'是r1中与Code字段'en'匹配的Country值,其路径Name.Language.Country中,Country没有出现,只有Name和Language出现,在出现的两个字段中,undefined类型的字段有2个,所以d=2。

我们可以发现,r=0是区分字段属于哪个记录的分界线;即从r=0的值起,后续的值是属于同一条记录的,直至下一个r=0的值。同一字段中的记录中,凡value不为null的值,其d的值一定是一样的。另外,一旦记录的schema定义完成,则字段的r和d的最大值就能确定下来,比如例子中的d值,只能是[0,3]。这些都是可以在实践过程中优化存储的点。

弄清楚repetition levels & definition levels后,就是记录的拆分和重组了。

除此之外,Dremel还提供一个参数设定,指定返回结果时所须扫描的数据比例。在某些场景下,我们的数据分析并不一定要求扫描全数据,在一个比较好的数学模型下,扫描部分数据所得结果也能反应真实情况。比如说,将这比例设置为80%的执行时间会比设定为100%时执行得快很多~~~ 在Google的论文中,还提到了很多Google对于Dremel的测试情况,个人觉得还是有比较大的参考价值的。有时间再整理吧。暂时不表。

EMC的颜开童鞋和百度的某小哥对此也有分享,可以参考

http://www.yankay.com/google-dremel-rationale/