- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在针对 hbase 集群运行 java mapreduce。
行键的格式为 UUID-yyyymmdd-UUID,行组将具有共同的第一个 UUID(行键前缀)。我将这些带有共享前缀的行称为一个组。
在我们的 hbase 集群中,我们有一些组包含比其他组更多的数据。一个团体的规模可能只有几千人,也可能超过一百万。
据我了解,一个区域将由一个映射器读取。
这意味着包含较大组的区域将分配给单个映射器,因此该单个映射器需要处理大量数据。
我已经阅读并测试了将 hbase.hregion.max.filesize 参数设置得较低,以便区域被分割。这确实提高了 MapReduce 作业的性能,因为更多的映射器被编码来处理相同的数据。
但是,将此全局最大参数设置得较低也会导致更多的数百或数千个区域,这会引入其自身的开销,因此不建议这样做。
现在回答我的问题:
是否可以根据 rowkey 前缀分割区域,而不是应用全局最大值?这样,如果一个大群体达到一定规模,它可能会蔓延到另一个地区。但较小的群体可以留在一个区域内,并使区域总数保持尽可能低。
希望这是有道理的!谢谢。
最佳答案
当您在 HBase 中创建表时,如果您事先知道“有问题的”键前缀,则可以根据您的情况提供键列表(即范围),以任何方式拆分它这是 scala 中的一个简单示例 - 但它在 Java 中几乎相同(除了一些更多的样板代码:))
private val admin=new HBaseAdmin(config)
if (!admin.tableExists(tableName)) createTable()
private def createTable() {
val htd = new HTableDescriptor(tableName)
val hcd = new HColumnDescriptor(TableHandler.FAMILY)
hcd.setMaxVersions(1)
htd.addFamily(hcd)
admin.createTable(htd, calcSplits) // <---- create the table with the splits
}
private def calcSplits = {
val splits = new Array[Array[Byte]](256)
var i=0
for (zones <- 0x00 to 0xff) {
val temp =new Array[Byte](1)
temp(0)=(0xff & zones).asInstanceOf[Byte]
splits(i) = temp
i+=1
}
splits
}
此外,当表已创建时,您可以使用相同的 HBaseAdmin 拆分方法来拆分特定区域
关于java - HBase MapReduce - 基于 rowkey 分割区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834261/
我已将 PrimeFaces 从 5.1 final 升级到 5.2 final(社区版本)。我有一个 延迟加载如下(仅出于纯测试目的重现问题的最小示例)。
我想知道 HBase 是否支持 RowKey 扫描的通配符。类似于: select * from TABLE where KEY like '%SEARCH_KEY%'; 我知道如果我们对行键的前缀有
我想 reshape /融化一个非对称矩阵,以便当两个列单元格根据 rowKey 都非零时,任何两行都跨列求和。我尝试了各种选项,但没有一个有效。我正在寻找适用于大型不对称矩阵的通用解决方案。 #Du
Azure TableStorage RowKey 中是否存在受限制的字符模式?我通过大量搜索未能找到任何记录。但是,我在某些性能测试中得到了暗示此类行为的行为。 我在由随机字符组成的 RowKey
我正在使用 HBase 来存储 webtable 内容,例如 google 如何使用 bigtable。 供google bigtable引用 我的问题是 行键 ,我们应该如何形成它。 正如您在 PD
我需要从开始日期到结束日期获取产品的页面 View 。所以我设计了这样的 Hbase rowkey。 ProductId(md5)_productId_dateKey(yyyymmdd) d:pag
我想知道像下面这样的行键是否不好: 用户名-时间戳 这些行将从 MapReduce 作业中读取,并将使用 java 客户端 API 放置。此外,将使用 STARTROW、ENDROW 选择一个子集。
我需要架构设计方面的帮助。 我有数十亿个实体,每个实体都有一个静态生命周期。意味着一个实体毕业于状态 S1->S2->S3->S4;其中 S1 是开始,S4 是结束。 一个典型的查询是:显示在 Sn-
那么,让我们看看我能否简要解释一下我的问题。 假设我们有一个 HBase 表,其中包含每次访问迪斯科舞厅的信息:每个迪斯科舞厅都会记录其姓名、访问者的姓名以及访问者的日期。 (是的,这是一个愚蠢的例子
我将我的 key 保存为字节数组。在 HBase Shell 中,当我查看我的 key 时,我看到非十六进制值......我没有启用任何编码,我没有启用任何压缩。 这是一个示例...什么是 VNQ?什
我的实体是一个键值对。 90% 的时间我会根据键检索实体,但 10% 的时间我还会进行反向查找,即我将按值搜索并获取键。 键和值都保证是唯一的,因此它们的组合也保证是唯一的。 使用Key作为Parti
我正在使用 Azure 表存储,它提供的查询表存储的选项非常少。我通过以下方式将 RowKey 作为组合键: "b844be0d-2280-49f7-9ad7-58c36da80d22_2518908
我正在 Azure 表存储中存储一些日志。我已经确定了应该使用的 PartitionKey。但是,我无法确定应该使用什么作为 RowKey。如果我使用 Sql Server,我会使用自动递增整数。据我
我正在 Azure 表存储中存储一些日志。我已经确定了应该使用的 PartitionKey。但是,我无法确定应该使用什么作为 RowKey。如果我使用 Sql Server,我会使用自动递增整数。据我
我需要知道 Azure 存储表是否已将 RowKey 与 PartitionKey 分开索引,以便执行此类查询... 假设:我的表中有论坛帖子,其 PartitionKey = UserEMail、R
我正在使用 Linux 诊断监视附加到 Azure VM 的 VHD。使用 CLI 启用诊断时,监控数据最终位于 PublicConfig.json 中指定的表 (LinuxDiskMetric) 中
我打算在 HBase 中存储流式天气数据。我的行键是:[5 个字母的城市代码][时间戳] 其中时间戳是 [日期][HH:mm:ss.SSS 中的时间]我只有一栏叫做“温度”。所以样本数据看起来像: N
我创建 DynamicTableEntity 如下: string env = "envTest"; stting ver = "1.0"; siring id = "12356"; string m
我正在尝试创建一个通用类: public class ClassName { public T AccessEntity(string id) { return (fr
支持我有键/值,其中值是一个逻辑字符串列表,我可以在其中附加字符串。为了避免将单个字符串项插入队列导致重写整个列表的情况,我将使用多个键值对来表示它。 Key -> 值的元数据,例如长度和子键格式Ke
我是一名优秀的程序员,十分优秀!