如何像 Hive 表分区一样在 Hbase 表中创建分区

2024-01-07

我们计划从 CDH3 迁移到 CDH4,作为迁移的一部分,我们还计划将 HBASE 引入我们的系统,因为它也会更新数据,在 CDH3 中我们使用 Hive 作为仓库。

这里我们遇到了迁移的主要问题,Hive 支持表分区。我们的系统有许多不同模式的表,有些表有基于日期的分区,我们有过去 5 年的数据历史记录(某些表中存在 365 * 5 分区)。

我们也希望在 HBase 中实现相同的行为,当我浏览时,我找不到在 HBase 中创建分区的解决方案。任何人都可以帮助我在 HBase 中实现这一分区明智的表创建吗?

我们选择 HBASE 的原因是它支持更新。

如果 HBASE 不支持这一点,则其他(如 MangoDB、Cassandra)支持我们的行为。

如果我们至少能找到一些解决方案,那真的很有帮助。


HBase有一个接近分区的概念,称为分区region http://hbase.apache.org/book/regions.arch.html。然而,HBase 中的这些分区不像 Hive(或 RDBMS)分区那样工作。每个区域都包含一系列键,但您可以通过拆分或分割将键范围分成更小的区域 - 例如如果您的原始区域包含键 0-9,您可以将其分为两个较小的区域 0-4 和 5-9 或十个分区 0、1、2...等。

如果您的密钥是复合的,那么日期将是它的第一部分,然后是您今天的密钥,您可以预先分割 hbase,以便每天都会获得一个或多个区域。

但是,您应该注意,最重要字节是连续的键会减慢您的写入速度(如果您正在进行一次性加载,则可能不是问题),这是一个称为“热点”的问题 - 您可以阅读有关它的信息以及克服它的示例方法来自 sematext 的 Alex Baranau 的博客文章 http://blog.sematext.com/2012/04/09/hbasewd-avoid-regionserver-hotspotting-despite-writing-records-with-sequential-keys/

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

如何像 Hive 表分区一样在 Hbase 表中创建分区 的相关文章

  • 从 HBase shell 导出数据

    我正在尝试将数据从 HBase Shell 导出到我可以解析的文本文件 然后添加到 msysql 数据库 我目前正在使用以下命令 echo scan registration COLUMNS gt registration status h
  • 运输例外

    我正在尝试导入 happybase 但在连接时收到以下错误消息 我已经运行了 Hadoop 伪节点集群和 Hbase 安装的组件版本如下 Hadoop 版本 1 0 4 Hbase 版本 0 94 4 快乐基地 0 4 有人可以查看下面的例
  • 如何增加 HBase 表中的区域数量

    我在 HBase 中创建了一个表 预分割了 8 个区域 使用 HexStringSplit 作为分割算法 现在我想增加区域的数量 而不破坏现有的表及其中的数据 我创建预分割的命令是 create t1 f1 NUMREGIONS gt 15
  • Java中通过忽略开始行和结束行的一部分来扫描HBase行

    我的 HBase 行如下 ABC A1 20160101 ABC A2 20160102 ABC A3 20160103 XYZ A9 20160201 从我的Java代码中我知道第一部分ABC和最后一部分20160101 我没办法得到中间
  • SparkSQL+Hive+Hbase+Hbase集成不起作用

    当我尝试连接配置单元表 正在使用 时出现错误 通过 Hbase 集成创建 在 Spark 中 我遵循的步骤 Hive表创建代码 CREATE TABLE test sample id string name string STORED BY
  • HBASE SPARK 带过滤器的查询,无需加载所有 hbase

    我必须查询 HBASE 然后使用 Spark 和 scala 处理数据 我的问题是 通过我的解决方案 我获取 HBASE 表的所有数据 然后进行过滤 这不是一种有效的方法 因为它占用了太多内存 所以我想直接做过滤器 我该怎么做 def Hb
  • 我想扫描大量数据(基于范围的查询),在写入数据时我可以做哪些优化以使扫描变得更快?

    I have billion我要扫描的 hbase 行数million一次行 什么是最好的优化技术我可以尽可能快地进行扫描 我们有类似的问题 我们需要通过键扫描数百万行 为此我们使用了映射缩减技术 对此没有标准的解决方案 因此我们编写了一个
  • 在 Java 中连接来自 HBase 的两个结果集?

    是否可以连接从 java 中的 hbase 检索的两个或多个结果集 不 不可能加入 JDBC 结果集 但是 您可以获取它们的结果并手动组合它们 如果它们兼容 如果它们属于同一实体 EDIT 如果您只需要组合两个相同类型的列表 您可以这样做
  • 高效查询Hbase

    我使用 Java 作为查询 Hbase 的客户端 我的 Hbase 表设置如下 ROWKEY HOST EVENT 21 1465435 host hst com clicked 22 1463456 hlo wrld com dragge
  • Hbase 架构嵌套实体

    有谁有关于如何创建带有嵌套实体的 Hbase 表的示例吗 Example UserName string SSN string Books collection 例如 书籍收藏看起来像这样 Books isbn title etc 我找不到
  • 重新部署后 HBase 协处理器未更新

    我正在使用 HBase 1 1 2 并尝试重新部署自定义端点协处理器来修复 Java 代码中的错误 我对协处理器代码进行了一些更改 并通过以下步骤重新部署它 重建协处理器 jar 将其复制到 HDFS 上的某个位置 删除现有的协处理器 al
  • Spark:如何通过 python-api 使用 HBase 过滤器,例如 QualiferFilter

    我想通过使用像 python api 中的 QualiferFilter 这样的过滤器从 HBase 获取行 我知道如何从 HBase 获取行 就像在代码下一样 host localhost keyConv org apache spark
  • HBase 上的 Thrift 有性能基准吗?

    我有一个可以将大量数据写入 hbase 的系统 系统是用c 编写的 发现hbase有其他语言的thrift接口 我的问题是 HBase 上的 Thrift 有性能基准吗 与java原生api相比 最劣势是什么 我推荐最近关于这个主题的两篇博
  • 将 protobuf3 与一些依赖于 Java 中的 protobuf2 的库一起使用

    我使用protobuf3来表示我们的数据 虽然我们需要hbase来存储数据 但似乎hbase依赖于protobuf2 当我编写以下行来创建 hbase 表时 admin createTable desc 然后我得到一个例外 NoClassD
  • Hbase 列族

    Hbase 文档表示 避免创建超过 2 3 个列族 因为 Hbase 不能很好地处理超过 2 3 个列族 其原因在于压缩和刷新 以及 IO 但是 如果我的所有列总是填充 对于每一行 那么我认为这个推理并不那么重要 因此 考虑到我对列的访问是
  • 如何定义Titan Graph DB Vertex的数据类型?

    我正在使用 Titan 和 Blueprint API 创建图形数据表 我使用 HBase 作为后端 我知道如何定义关键索引的数据类型 Example TitanKey name graph makeType name name dataT
  • 将多个前缀行过滤器设置为扫描仪 hbase java

    我想创建一台扫描仪 它可以为我提供带有 2 个前缀过滤器的结果例如 我想要其键以字符串 x 开头或以字符串 y 开头的所有行 目前我知道只能使用一个前缀 方法如下 scan setRowPrefixFilter prefixFiltet 在
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • 从 Storm Bolt 将行插入 HBase

    我希望能够从分布式 非本地 Storm 拓扑将新条目写入 HBase 有一些 GitHub 项目提供以下任一功能 HBase 映射器 https github com ptgoetz storm hbase or 预制风暴螺栓 https
  • Janusgraph 0.3.2 + HBase 1.4.9 - 无法设置 graph.timestamps

    我在 Docker 容器中运行 Janusgraph 0 3 2 并尝试使用运行 HBase 1 4 9 的 AWS EMR 集群作为存储后端 我可以运行 gremlin server sh 但如果我尝试保存某些内容 我会得到粘贴在下面的堆

随机推荐