hadoop - 如何定义hbase行键,以便在表中有数百万条记录时以优化的方式获取记录

标签 hadoop hbase auto-increment row-key

我有3千万条记录放入表中,但是当尝试从那里查找一条记录时,我将花费大量时间进行检索。您能否建议我如何生成行键,以便我们可以快速获取记录。

现在,我已经将1,2,3的自动增量ID用作行键,以及需要采取哪些步骤来提高性能。让我知道你的担心

最佳答案

通常,当我们要提高SQL结构化表的性能时,我们会遵循一些基本/常规调整,例如将适当的索引应用于查询中使用的列。将适当的逻辑分区或存储桶应用于表。给缓冲区足够的内存来执行一些复杂的操作。

当涉及大数据时,尤其是如果您使用hadoop,真正的问题在于硬盘和缓冲区之间的上下文切换。和不同服务器之间的上下文切换。您需要确保如何减少上下文切换以获得更好的性能。

一些注意事项:

使用解释功能了解查询结构并尝试提高性能。

如果您使用整数row-key,那么它将提供最佳性能,但始终在表的开头创建row-key / index。因为后来的性能被杀死。

在Hive / Impala中针对hbase表创建外部表时,将hbase行键映射到Hive / Impala中的字符串列。如果不这样做,则查询中将不使用行键,并且将扫描整个表。

永远不要在行键查询中使用LIKE,因为它会扫描整个表。使用BETWEEN或=,<,> =。
如果您没有在查询中使用针对行键列的过滤器,则行键设计可能是错误的。行键应设计为包含查找特定数据子集所需的信息

关于hadoop - 如何定义hbase行键,以便在表中有数百万条记录时以优化的方式获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45011774/

相关文章:

sql - 我可以限制 Auto_Increment 列不接受来自外部的值吗?

java - 使用复合输入格式 - Map-side Join

hadoop - YARN Timeline Service v2 无法启动

java - 在 Java 中将字符串转换为可逆的内容

Mysql 替换所有 id 以形成正确的序列

asp.net-mvc - asp.net mvc linq sql问题

hadoop - Hadoop DistributedCache导致IOException

java - Hadoop 2.6.1 java.lang.NullPointerException 在 org.apache.hadoop.hdfs.DFSOutputStream.isLazyPersist(DFSOutputStream.java :1709)

hadoop - `yarn top`命令的头信息

hadoop - 从hbase表中获取行键时如何应用LIMIT?