HBase单调递增键的行键设计

2024-04-06

我有一个 HBase 表,我在其中编写行键,例如:

<prefix>~1
<prefix>~2
<prefix>~3
...
<prefix>~9
<prefix>~10

HBase shell 上的扫描给出输出:

<prefix>~1
<prefix>~10
<prefix>~2
<prefix>~3
...
<prefix>~9

应该如何设计行键,使得有键的行<prefix>~10最后出现?我正在寻找一些推荐的方法或更流行的设计 HBase 行键的方法。


应该如何设计行键,以使键 ~10 的行排在最后?

您以这种方式看到扫描输出,因为 HBase 中的行键保持排序按字典顺序 http://en.wikipedia.org/wiki/Lexicographical_order与插入顺序无关。这意味着它们根据字符串表示形式进行排序。请记住,HBase 中的行键被视为具有字符串表示形式的字节数组。最低顺序的行键首先出现在表中。这就是为什么 10 出现在 2 之前,依此类推。请参阅各部分Rows在此page http://wiki.apache.org/hadoop/Hbase/DataModel了解更多相关信息。

当您用零填充整数时,它们的自然顺序在按字典顺序排序时保持不变,这就是为什么您看到的扫描顺序与插入数据的顺序相同。为此,您可以按照 @shutty 的建议设计行键。

我正在寻找一些推荐的方法或更流行的设计 HBase 行键的方法。

为了设计出好的设计,需要遵循一些一般准则:

  • 使行键尽可能小。
  • 避免使用单调递增的 rowkey,例如时间戳等。这是一个糟糕的 shecma 设计,会导致 RegionServer 热点。如果您无法避免这种情况,请使用某种方式,例如散列或加盐以避免热点。
  • 如果可能,请避免使用字符串作为行键。数字的字符串表示形式与其整数或长表示形式相比需要更多字节。例如 :一个long是8个字节。您可以在这八个字节中存储最多 18,446,744,073,709,551,615 的无符号数。如果您将此数字存储为字符串(假设每个字符一个字节),则需要近 3 倍的字节。
  • 使用某种机制(例如散列),以便在区域加载不均匀的情况下获得行的均匀分布。您还可以创建预分割表来实现此目的。

看到这个link http://hbase.apache.org/book/rowkey.design.html有关行键设计的更多信息。

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HBase单调递增键的行键设计 的相关文章

  • Titan-1.0.0+Hbase-0.98.20使用java远程模式连接错误

    我正在学习Titan数据库 我已经在本地模式下成功运行了它 现在 我尝试在 Titan 文档中介绍的 远程服务器模式 下使用 Titan 数据库 我的 Titan 版本是 Titan 1 0 0 hadoop1 我的 LAN 中有集群 包括
  • 在数据库中存储 JS 数组和对象

    我有一个应用程序 可以让用户用 JS 构建东西 我希望用户能够保存其工作的当前状态以重用或共享它 但他拥有的是存储在 JS 数组中的 JS 对象的集合 具有非常不同的属性 颜色 标签 x y 位置 大小等 SQL 对于该特定任务来说似乎很糟
  • 使用增量计数器在 Couchbase 集群中生成唯一密钥

    我听到的关于 Couchbase 和其他 NoSQL 数据库的最常见问题是如何为记录生成唯一键 或者更具体地说 如何复制常见关系数据库的自动增量功能 Couchbase 中经常提到的解决方案是增量函数 您可以在数字键上调用增量 它将按顺序生
  • 根据项目更改列表视图行的颜色

    我想根据列表视图的状态更改其颜色 我有两个状态 我想将 待处理 更改为红色 将 完成 更改为蓝色 这怎么可能 我不知道 因为这是我第一次在列表视图中执行此操作 也许是这样的 Dim ListView1 As ListView New Lis
  • java.lang.String 类型中没有由 @DynamoDBHashKey 注释的方法或字段

    我不知道为什么不运行这个项目 Data DynamoDBTable tableName tableName public class entityName implements Serializable private static fin
  • 在 MySQL 中使用 NoSQL

    我注意到 MySQL 可以将 Memcached NoSQL 与 InnoDB 结合使用 但我无法检索有关如何使用它的信息 我想与 PHP 一起使用 NoSQL 查询是标准的吗 首先 MySQL从5 6版本开始只支持NoSQL的memcac
  • 如何从 NoSQL DBMS(如 DynamoDB)存储 GPS 坐标并搜索半径范围内的地点

    我的团队需要像 DynamoDB 这样的 DBMS 来存储大量数据 主要是位置和坐标 我考虑过使用一些基于 GIS 的 DBMS 例如 PostGIS 并在 POINT 上建立索引 但 DynamoDB 似乎非常适合我们的使用 存储坐标并快
  • 如何确定 HBase 表的大小?有什么命令可以这样做吗?

    我的 Hbase shell 上有多个表 我想将它们复制到我的文件系统上 有些表超过 100GB 但是 我的本地文件系统中只剩下 55GB 可用空间 因此 我想知道 hbase 表的大小 以便我可以仅导出小尺寸的表 任何建议表示赞赏 谢谢
  • 在具有整数和字符变量的数据框上按行应用 FUN

    一个完全基本的问题 如果重复 请原谅我 set seed 1 df lt data frame id c a a b b a a sample 1 10 size 5 replace T b sample 1 10 size 5 repla
  • 是否有一个 nosql 存储也允许存储实体之间的关系?

    我正在寻找 nosql 键值存储 它还提供存储 维护存储实体之间的关系 我知道 Google App Engine 的数据存储允许实体之间拥有和不拥有的关系 任何流行的 nosql 商店都提供类似的东西吗 尽管它们中的大多数都是无模式的 但
  • 如何保证mongoDb中数据的完整性?

    我正在尝试从关系数据库 mysql 数据迁移到nosql mongoDb 但是我如何确保 mongodb 中的数据完整性 我发现我们无法在服务器端做到这一点 我应该在应用程序端使用什么来处理数据完整性 例如 我有两个表 user 和 tas
  • 如何定义Titan Graph DB Vertex的数据类型?

    我正在使用 Titan 和 Blueprint API 创建图形数据表 我使用 HBase 作为后端 我知道如何定义关键索引的数据类型 Example TitanKey name graph makeType name name dataT
  • 在hbase中创建表

    我是 hbase 和 hadoop 的新手 无论如何 我已经成功建立了一个由3台机器组成的hadoop集群 现在我需要一些帮助来建立数据库 我有一个表 评论 包含字段 user id comments 对评论的评论 可以多个 和状态字段相同
  • Cassandra cli:将十六进制值转换为人类可读的格式

    我开始于卡桑德拉 questions tagged cassandra 当我跑步时list or get命令在cassandra cli questions tagged cassandra cli 我得到这样的结果 default use
  • Firebase 数据库结构 - 需要建议

    我知道这个问题可能被视为基于意见的问题 但是我认为值得讨论正确构建数据库的方法 我在 Swift 中开发 iOS 应用程序 并决定使用 firebase 作为我的后端服务 让我们从应用程序描述开始 该应用程序旨在为图书阅读体验提供跟踪和社交
  • 使用 Django 会话存储登录用户

    我正在创建一个以 REST 为中心的应用程序 它将针对大多数特定于域的模型使用某种 NoSQL 数据存储 对于我打算围绕 REST 数据框架构建的主站点 我仍然希望对用户 计费信息和域数据模型范围之外的其他元数据使用传统的关系数据库 有人告
  • hbase api - 通过行ID列表获取数据行信息

    是否可以通过hbase java API通过行id列表获取hbase数据记录 例如 我有一个已知的 hbase 行 ID 列表 mykey1 myhash1 mykey1 myhash2 mykey1 myhash3 mykey2 myha
  • 带有版本控制的 json 数据存储

    问题定义 有一个Java服务器存储JSON可以映射到 Java 类的数据 Java 类可能会发生变化 目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象 应该有一个良好的版本控制系统 例如 能够向 J
  • Firebase 数据库 - 编码错误

    我是 Firebase 的新手 我想使用他们的数据库 但编码似乎存在一些问题 这是我使用 UTF 8 编码的示例 json Stack This is madness Overflow 666 这就是当我将 json 导入 Firebase
  • 如何获取特定名称的行索引号?

    如何确定与特定行名称对应的行索引号 我有一个行名称向量 我想使用它们来获取矩阵中相应行索引的向量 I tried row and as integer rownames matrix object 但似乎都不起作用 此外which 你可以看

随机推荐

  • 如何在 Jersey 客户端中发送 DELETE 请求中包含的数据?

    我在 Jersey 2 x 中有以下服务器端代码 Path store remove from group DELETE Consumes MediaType APPLICATION FORM URLENCODED Produces Med
  • 自定义会员资格提供商*没有*数据库?

    我一直在寻找有关 MVC 4 中成员资格提供程序更改的各种 SO 问题 博客文章等 虽然我喜欢其中的许多更改和简化 尤其是开箱即用的外部登录 支持 我还无法找到一件看似简单的事情 如何使用使用其他数据源的自定义成员 角色提供者覆盖成员资格
  • 如何从 viewcontainer 角度删除特定视图

    在下面的示例中 https stackblitz com edit angular 1acvol https stackblitz com edit angular 1acvol 我使用创建了多个视图TemplateRef并将它们附加到同一
  • 异步加载车把模板

    我正在尝试编写一个函数 该函数将为我提供一个已编译的车把模板 我将所有模板都放在单独的文件中 使用 ajax 调用来获取模板并编译它以供使用 但我需要使用承诺 以便我可以实际使用它 function getTemplate name get
  • Python,OpenCV:增加图像亮度而不溢出UINT8数组

    我正在尝试增加灰度图像的亮度 cv2 imread 返回一个 numpy 数组 我正在向数组的每个元素添加整数值 从理论上讲 这会增加它们中的每一个 之后我就可以将上限设置为 255 并获得具有更高亮度的图像 这是代码 grey cv2 i
  • 连接建立后如何从服务器(使用连接列表)向客户端发送命令?

    我有这两个类 它们是我的服务器应用程序 桌面 的一部分 需要在建立连接后将命令发送回客户端 当我尝试这样做时 clients i Send info the Send 例行公事 的监听器 cs 可以访问 但我有以下语法错误 怎么解决这个问题
  • CSS 关键帧动画与平移变换在 IE 10 和 Firefox 中捕捉到整个像素

    看起来 IE 10 和 Firefox 在使用 css 关键帧动画中的平移 2d 变换对元素的位置进行动画处理时 都会将元素捕捉到整个像素 Chrome 和 Safari 没有 看起来a lot制作微妙运动动画时效果更好 动画是通过以下方式
  • 2 个不同长度的排序数组的中值

    如何找到长度分别为 m 和 n 的 2 个已排序数组 A 和 B 的中位数 我已经搜索过 但大多数算法都假设两个数组的大小相同 我想知道如果 m n 我们怎样才能找到中位数 考虑例子 A 1 3 5 7 11 15 其中 m 6 B 2 4
  • 在 AngularJS 中处理来自代理的 HTTP 302 响应

    我有一个反向代理 可以检查多个应用程序的全局身份验证 当用户断开连接但仍尝试使用我的应用程序时 代理会发送 302 响应 HTTP 1 1 302 Found Date Wed 11 Sep 2013 09 05 34 GMT Cache
  • 生成递归目录搜索的 XML 映射

    我正在阅读一个列表 其中某些组件下有大量档案 例如 component1 filelocation1 a11 ear component1 filelocation1 a12 ear component2 filelocation2 a2
  • 如何在Rails 3.2 erb中使用eval在运行时执行存储在字符串中的视图代码?

    我们想要做的是存储一大块erb代码在一个string然后在运行时执行代码 这是我们所做的测试 从工作的 erb 文件中取出一段代码 使用 eval 重写 erb 文件 这是取出的 erb 代码块 tr th th th th th th t
  • [Laravel]:SQLSTATE[3F000]:模式名称无效

    构建 Laravel 项目 v 5 4 当我运行时php artisan migrate我收到以下错误消息 Illuminate Database QueryException SQLSTATE 3F000 Invalid schema n
  • Mockk-spyk 模拟方法仅一次

    I have spyk from mockk图书馆 my spyk My 后来我嘲笑其中一种方法返回类似的内容 every my method someString returns something 我正在创建这个spyk in a Be
  • 获取具有默认值的参数列表

    我使用 ALL ARGUMENTS 来获取 oracle 10g 中的参数列表 但我找不到参数是否有默认值 我怎样才能做到呢 您可能需要在 10g 中采用 plsql 编程 如下面的代码示例所示 从某种意义上说 这个解决方案肯定是蛮力的 因
  • 如何在 javascript Chart.js 中仅显示整数

    我想在java脚本库创建的图表中仅显示整数而不是浮点数Chartjs org http www chartjs org docs 这是示例的链接graph http qlu in 0o3CTx stats 我是新手 有人可以帮我配置这个吗
  • THREE.JS 加载 STL 网格数组

    因此 我有一个数据库 其中包含文件引用列以及对其所需的子 STL 文件的任何引用 我可以将一两个模型加载到 THREE js 查看器中 因此所有这些都可以正常工作 但是当我加载四个左右的数组时 事情开始变得毛茸茸的 分配的网格 ID 开始变
  • Android 设计模式,用于 UI 和非 UI 模式的后台操作

    我有一个后台操作 我希望能够以两种模式运行 UI mode 由用户启动 在整个生命周期内为用户提供操作状态的精确反馈 非用户界面模式 由AlarmManager并在其生命周期结束时向用户提供操作摘要 自然的设计选择只为实现UI mode将会
  • 如何使用 Inno Setup 连接到 MS SQL Server?

    我想在安装过程中连接到 MS SQL Server 2008 有一个类似的问题 https stackoverflow com q 2171199 960757 它提供了一个解决方案 使用isql exe工具 与 SQL Server 20
  • MS Dynamics CRM 2012:脚本编辑器增强功能

    我一直在尝试查找有关下一个 Microsoft Dynamics CRM 产品 2012 6 的更多信息 我主要对脚本编辑器的任何增强感兴趣 版本 4 和版本 5 2011 之间有很大的改进 最受我欢迎的是跨表单 字段事件共享脚本函数的能力
  • HBase单调递增键的行键设计

    我有一个 HBase 表 我在其中编写行键 例如