- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了更好地说明这个问题,我将从一个例子开始。让我们说,你有 3 张 table :
最佳答案
首先是痛苦的事实.. 正如其他帖子中提到的,HBase 不完全支持部分键。假设您通过以下方式获得 key ,正如您所提到的:
TestID_StudentID_TestResultsID
您无法通过StudentID 进行搜索,同时享受良好的性能。但是,有一种方法可以在扫描期间过滤行,仅取决于行键。但请记住,过滤器的性能比良好的优化表架构更差。因此,出于理解/经验,您有以下选择:
1) 您尝试设计方案,使其针对大量查询进行优化。例如,大多数查询都需要给定学生的数据,因此您将 studentID 放在键的开头。比一些查询需要知道当前学生的测试结果,然后您使用 {STARTROW=>given_studentID, STOPROW=>given_studentID+1} 进行扫描,并使用关键字过滤器过滤您得到的结果。可以设置 keyfilters 来过滤特定的 testID。但是在这种情况下,如果您想查看哪些学生参加了测试,则需要进行全面扫描并对结果集应用过滤器,当我们谈论性能时,这并不是很“便宜”。
2) 正如 [http://stackoverflow.com/questions/12806762/hbase-data-only-in-key-compoung-key-wildcards][1] 所建议的,您也可以将数据复制到两个不同的表中,第一个是 TestID_StudentID_TestResultsID,第二个是这样的:StudentID_TestID_TestResultsID。通过这种方式,您可以通过给定的 testID 或 StudentId 进行查询,因为您可以在第一个或第二个表中愉快地搜索。如果您想知道哪个学生在所有测试中的成绩最好,那么您又会遇到麻烦。在这种情况下,您再次需要全面扫描。了解您将要进行的查询类型非常重要,以便您可以适本地规划您的架构。 (你真的需要 key 中的测试结果吗?)
3)还有第三种选择,我用过一次。这在很大程度上取决于数据本身。假设您将有 500 000 名学生,大约 50 次测试,然后是 50*500 000 次测试结果。在这种情况下,我将按以下方式设计架构:
TestID_StudenIT_Results
*如果您想查看学生在特定测试中的表现,您可以根据测试进行扫描,因为关键是从它开始。
*如果您想查看学生在其所有测试中的表现,您可以进行 50 次扫描,每次扫描都使用 50 个测试 ID 中的一个,因此扫描结果如下所示:
test1_studentX
test2_studentX
test3_studentX
test4_studentX
...
...
test50_studentX
50 次扫描可能听起来太多了,但它非常适合 map 缩小工作。这里的问题是,您真的有 50 个 testID,还是您拥有的数字适合于此?
*如果您想查看所有学生在所有测试中的表现,您仍然必须使用此模式进行全面扫描。
那是我的!
干杯,
尼可
关于search - Hbase按部分键搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908378/
发出时Delete对于 hbase,我知道它不会立即删除数据。但是什么时候删除数据,我的意思是,物理上? 最佳答案 当您向 HBase 写入内容时,它会存储在内存存储 (RAM) 中,然后再写入磁盘。
同一行的列族属于同一个 RegionServer。 那么,这里的问题是一个 RegionServer 会在不同的机器上存储不同的列族吗? 最佳答案 不一定,但在某些时候它会。这是基本 HBase 架构
如果我想插入表格: row | fam:qualifier | timestamp | value 1 | foo:bar | 12345 | 2 1 | foo:bar | 12346 | 3 1
有时我想退出我在 HBase shell 中运行的命令,例如扫描操作通常需要太多时间。 所以我想停止运行这个命令,但我不想退出 HBase shell。 我常用的停止运行命令的方式,我使用了Ctrl+
有没有办法设置 Hbase 以便我们可以在同一个集群中创建多个数据库? 最佳答案 只是为了刷新主题:http://hbase.apache.org/book.html#namespace 5.3.1.
怎么看version的 hbase我在用? 你能下命令吗? 最佳答案 hbase version命令行界面中的命令给出了 version的 hbase正在使用中。 以下是来自 Cloudera 的两个
高级问题: HBase 是否对所有分布(因此不是实现的工件)通用的每行施加了最大大小,无论是在 方面吗?字节存储 或在 方面细胞数 ? 如果是这样: 限制是什么? 极限存在的原因是什么? 限制在哪里记
假设,假设我在数据仓库设置中有一个星型模式。 有一个非常非常长的事实表(想想几十亿到几万亿行)和几个低基数维度表(想想 100 个维度表)。每个事实表外键 指向一个维度表的主键是位图索引的。每个维度表
版本:Hadoop: 2.0.0-cdh4.3.1 HBase: 0.94.6-cdh4.3.1 我正在运行 cloudera quick start vm,这是我的小型远程 HBase Java 客
我正在尝试以完全分布式模式配置 HBase。 (使用 Ubuntu 12.04,Apache Hadoop 2.2(以伪模式运行,HBase 版本 0.98) 以下是我的 bashrc 设置: exp
我想知道如何正确配置 hbase.zookeeper.quorum 以将 zookeeper 实例指向集群模式。 最佳答案 hbase.zookeeper.quorum 属性是运行 ZooKeeper
我想知道如何正确配置 hbase.zookeeper.quorum 以将 zookeeper 实例指向集群模式。 最佳答案 hbase.zookeeper.quorum 属性是运行 ZooKeeper
我正在尝试对位于 Hbase 中的两个表进行映射连接。我的目的是在hashmap中保留小表的记录并与大表进行比较,一旦匹配,再次将记录写入hbase中的表中。我使用 Mapper 和 Reducer
我正在尝试编写一个程序来连接到 HBase。但是当我执行以下命令时HBaseConfiguration.create();我收到以下错误:. "hbase-default.xml 文件似乎是旧版本的
基于HBase documentation ,再次遵循 Google BigTable 论文的引用,据说这些行是按行键的字典顺序存储的。 很明显,当我们在 rowkey 中有一个字符串或者如果我们将一
我有一个 hbase 表,其中的行键如 row1、row2、row3 .... 和 rowN,我想要的是获取行键从 row100 到 row200 的行,如何编写查询子句或将 hbase 表设计为让查
我正在尝试创建命名空间,但出现类似下面给出的错误 hbase(main):031:0> create namespace 'Aniruddha'
我发现为以下要求建模 HBase 表有困难。 我有一个表“商店”,它存储了商店的详细信息(必胜客)。 我有一个表格“订单”,其中包含交易摘要(总交易金额等...)。 我有另一个表“Order_Item
谁能告诉我如果在不首先禁用表的情况下使用“alter”命令可能影响表结构的可能影响? 据我所知,禁用表意味着关闭与表的所有连接。如果我在不禁用表的情况下使用 alter,可能会发生什么异常情况? 我正
我无法将表从 HBase 导出到 HDFS。下面是错误跟踪。它是相当大的尺寸。还有其他方法可以导出吗? 我使用以下命令导出。我增加了 rpc 超时,但工作仍然失败。 sudo -u hdfs hbas
我是一名优秀的程序员,十分优秀!