Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop OLAP可以在BigTable中完成吗?_Hadoop_Olap_Mapreduce_Hbase_Hive - Fatal编程技术网

Hadoop OLAP可以在BigTable中完成吗?

Hadoop OLAP可以在BigTable中完成吗?,hadoop,olap,mapreduce,hbase,hive,Hadoop,Olap,Mapreduce,Hbase,Hive,在过去,我使用在MySQL上运行的OLAP多维数据集构建WebAnalytics。 现在,我使用的OLAP多维数据集只是一个大表(好的,它的存储比这个更智能),其中每一行基本上都是一个度量或聚合的度量集。每个度量都有一组维度(即哪个页面名、用户代理、ip等)和一组值(即多少页面浏览量、多少访问者等) 在这样的表上运行的查询通常采用以下形式(meta SQL): 因此,您可以通过上述过滤器获得所选一天中每小时的总数。 一个障碍是,这些多维数据集通常意味着一个完整的表扫描(各种原因),这意味着对这些

在过去,我使用在MySQL上运行的OLAP多维数据集构建WebAnalytics。 现在,我使用的OLAP多维数据集只是一个大表(好的,它的存储比这个更智能),其中每一行基本上都是一个度量或聚合的度量集。每个度量都有一组维度(即哪个页面名、用户代理、ip等)和一组值(即多少页面浏览量、多少访问者等)

在这样的表上运行的查询通常采用以下形式(meta SQL):

因此,您可以通过上述过滤器获得所选一天中每小时的总数。 一个障碍是,这些多维数据集通常意味着一个完整的表扫描(各种原因),这意味着对这些东西的大小(在MiB中)有一个实际的限制

我目前正在学习Hadoop和类似的东西的来龙去脉

在BigTable上以mapreduce的形式运行上述查询看起来很简单: 只需将“hour”设为键,在映射中进行过滤,并通过求和值进行减少

你能在BigTable类型的系统上以“实时”(即通过用户界面和用户尽快获得答案)而不是批处理模式运行我上面所示的查询(或至少使用相同的输出)吗


若否,;在BigTable/Hadoop/HBase/Hive等领域,什么是合适的技术来做这样的事情?

甚至已经做了(有点)

LastFm的聚合/摘要引擎:


谷歌搜索发现了一个谷歌代码项目“mroll”,但除了联系信息(没有代码,什么也没有)。尽管如此,我还是想找那个家伙看看有什么事

安德烈·德拉戈米尔(Andrei Dragomir)就Adobe如何使用M/R和HBase执行OLAP功能进行了一次有趣的讨论

视频:


幻灯片:

我的答案与HBase有关,但同样适用于BigTable

城市飞艇开源,我认为这是接近你想要的。在这里看到他们的照片


Adobe还就如何使用HBase实现“低延迟OLAP”做了一些演示(和)。

如果您正在寻找一种表扫描方法,您是否考虑过Google BigQuery?BigQuery在提供交互式响应的背面进行自动扩展。Jordan Tigani在2012年谷歌I/O活动上的一次精彩演讲解释了一些内部问题


它不是MapReduce,而是像您所描述的那样面向高速表扫描。

我们通过预先捕获SQL查询并将其映射到适当的HBase限定符,成功地在HBase中创建了低延迟OLAP。欲了解更多详情,请访问以下网站


谢谢你的建议。根据他们的网站:“核心思想是预先计算聚合并以一种高效的方式存储它们”。我的想法是从一组数据开始,然后根据用户当时的需求进行聚合;然后,运行时聚合是一个将多维数据集的适当横截面汇总起来的问题。Zohmg可以为您指出如何做到这一点的方法。我知道至少有一个广告网络使用HyperTable或HBase为其客户执行实时仪表板,因此这是可行的。自述文件中说:“代码现在已经与当前的Hadoop和HBase实现完全过时,留在这里慢慢消亡。”虽然此链接可以回答这个问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。
SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour