我想使用Hbase来存储网络事件,行键将是事件的时间戳。这将在Hbase中创建热点,为了避免这种情况,我将在行键中添加一个盐分前缀。这将使行均匀地分布在所有区域。到目前为止没问题。
但是我也想使用Cloudera来使用SQL查询这些数据。有可能用黑斑羚加盐吗?还是需要* sql查询才能获得所有结果?
发布于 2013-12-12 01:11:55
不幸的是,黑斑羚不支持这一点。我还发现,Impala在HBase上的性能非常差。我仍在努力调整我的配置,以使性能更好。在我的实验中,拼花似乎是最快的(到了10秒x)。事实上,一个没有压缩的平面tsv文件的性能要好于HBase。下面描述了使用HBase的Impala用例(直接来自Cloudera文档):
通过Impala查询HBase的用例 以下是使用Impala查询HBase表的常用用例: 在Impala中保存大型事实表,在HBase中保留较小的维度表。事实表使用Parquet或其他为扫描操作优化的二进制文件格式。连接查询扫描大型Impala事实表,并在HBase中使用高效的单行查找交叉引用维度表。使用HBase存储快速递增的计数器,例如一个网页被浏览了多少次,或者在一个社交网络上,一个用户有多少连接,或者一个帖子收到了多少选票。HBase对于捕获这样的可变数据是有效的:仅附加存储机制可以有效地将每个更改写入磁盘,并且查询总是返回最新的值。应用程序可以从HBase查询特定的总计,并将结果与从Impala查询的更广泛的数据集结合起来。在HBase中存储非常宽的表。宽表有许多列,可能有数千列,通常记录一个重要主题的许多属性,例如在线服务的用户。这些表通常也是稀疏的,也就是说,大多数列值为NULL、0、false、空字符串或其他空白或占位符值。(例如,任何特定的网站用户都可能从未使用过某些站点功能,在其配置文件中填写了某个字段,访问了站点的特定部分,等等)。对这类表的典型查询是查找单个行来检索有关特定主题的所有信息,而不是像在典型的Impala托管表中那样,对数百万行进行求和、平均或过滤。 或者可以将HBase表与更大的Impala管理表连接起来。例如,分析一个站点的表示web流量的大型Impala表,选出50个浏览页面最多的用户。将结果与HBase中的wide user表连接起来,以查找这些用户的属性。联接的HBase端将在HBase中产生50个有效的单行查找,而不是扫描整个用户表。
专门针对HBase运行SQL查询。你查过菲尼瓦了吗?它确实支持盐析表,并提供SQL语法。不过,我不知道它的速度有多快,也不知道它与Dremel实现相比有多快。
https://stackoverflow.com/questions/20522961
复制相似问题