过去,我曾经使用在MySQL上运行的OLAP多维数据集构建WebAnalytics。 现在我使用OLAP多维数据集的方式只是一个大表(好吧,它比那更智能地存储),其中每行基本上是一个测量或聚合的测量集。每个度量都有一堆维度(即哪个页面名称,用户名,ip等)和一堆值(即多少个综合浏览量,多少访问者等)。
在这样的表上运行的查询通常采用(meta-SQL)形式:
SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
因此,您可以使用上述过滤器获取所选日期中每小时的总计。 一个障碍是这些立方体通常意味着全表扫描(各种原因),这意味着你可以制作这些东西的实际尺寸(在MiB中)。
我目前正在学习Hadoop等的来龙去脉。
在BigTable上运行上述查询作为mapreduce看起来很容易: 只需将'小时'作为关键,在地图中进行过滤,然后通过对值进行求和来减少。
你可以在“实时”(即通过用户界面和用户得到他们的答案尽快)而不是批处理模式的情况下,在BigTable类型的系统上运行如上所示(或至少具有相同输出)的查询?
如果没有;在BigTable / Hadoop / HBase / Hive等领域做这样的事情的适当技术是什么?
答案 0 :(得分:9)
它甚至已经完成了(有点)。
LastFm的聚合/摘要引擎:http://github.com/zohmg/zohmg
谷歌搜索出现了一个谷歌代码项目“mroll”,但它没有任何东西,除了联系信息(没有代码,没有)。不过,可能还想与那个人联系,看看有什么事情发生。 http://code.google.com/p/mroll/答案 1 :(得分:4)
我的回答与HBase有关,但同样适用于BigTable。
Urban Airship开源datacube,我认为这与你想要的很接近。在这里查看他们的presentation。
答案 2 :(得分:4)
我们设法通过预先对SQL查询进行预处理并将其映射到适当的Hbase限定符来在HBase中创建低延迟OLAP。有关详细信息,请访问以下网站。
http://soumyajitswain.blogspot.in/2012/10/hbase-low-latency-olap.html
答案 3 :(得分:3)
如果您正在寻找表格扫描方法,您是否考虑过Google BigQuery? BigQuery在后端自动横向扩展,提供交互式响应。来自2012年Google I / O活动的Jordan Tigani举办了一场精彩的会议,解释了一些内部事件。
http://www.youtube.com/watch?v=QI8623HlYd4
它不是MapReduce,而是像你所描述的那样面向高速表扫描。
答案 4 :(得分:2)
Andrei Dragomir就Adobe如何使用M / R和HBase执行OLAP功能进行了有趣的讨论。