java - 通过 Java 以编程方式设置“hbase.server.keyvalue.maxsize”
问题描述
我正在通过 Java Spring boot 执行 hbase 操作。我收到错误“大小为 10762275 的单元格超出了 10485760 字节的限制”。
在某个地方我开始了解增加单元大小,即需要在 hbase-site.xml 中将“hbase.server.keyvalue.maxsize”设置为所需的大小才能解决此问题。我添加了这个属性并解决了问题。
但是我想通过我的 Java 代码添加这个属性,因为我可能无法在生产中访问 hbase-site.xml。
我设置属性的配置方法是:
public Configuration createHbaseConfiguration() {
Configuration conf = HBaseConfiguration.create();
conf.clear();
conf.set("hbase.master.port", hbaseConnectionPortNum);
conf.set("hbase.master", hbaseConnectionIpAddr);
conf.set("hbase.zookeeper.quorum", zookeeperConnectionIpAddr);
conf.set("hbase.zookeeper.property.clientPort", zookeeperConnectionPortNum);
conf.setInt("hbase.client.retries.number", 2);
conf.setInt("hbase.client.keyvalue.maxsize", 0);
conf.setInt("hbase.server.keyvalue.maxsize", 0);
return conf;
}
我能够连接到 hbase,也可以使用这些 proeprites 通过 java 执行所有其他 hbase 操作,但是我在单元大小问题上遇到了相同的问题。
注意:将“hbase.server.keyvalue.maxsize”设置为 0 会消除对单元大小的所有限制。
总结: 如果我在 hbae-site.xml 中设置属性“hbase.server.keyvalue.maxsize”,它会非常好,但是如果我尝试通过 java 以编程方式添加它,它就不起作用。
请告诉我问题的原因和解决方法?
解决方案
hbase.server.keyvalue.maxsize保护您的生产服务器免受试图上传大单元的行为不端的客户端的影响。该属性不能被客户端覆盖,这与其最初的目的相矛盾。
hbase.client.keyvalue.maxsize用于在客户端验证单元大小而不向服务器请求。通常它与hbase.server.keyvalue.maxsize具有相同的值。
上传大小超过 10MB(默认值)的单元格是个坏主意。尝试阅读HBase 中的MOB功能,它专为您的用例而设计。
推荐阅读
- python-3.x - Python 脚本不唤醒
- c# - 在 utf-8 文件夹中读取 csv 的连接字符串
- node.js - 如何解决 nexe 编译代码 2 错误?
- appium - Appium中可以使用哪个命令在移动应用程序和Web应用程序之间切换?
- java - 在 Ubuntu 20.04 LTS 中安装 Eclipse for C/C++ 运行时出错/崩溃
- python - 如何在 django 模型中创建一个方法,该方法返回同一模型中字段的总和?
- java - 另一个 LiveData Observer 中的 LiveData Observer
- c++ - 使用 C++ 中对象数组的所有组合初始化矩阵
- python - 切片在 python 中无法正常工作
- google-apps-script - 将数据从另一个电子表格导出到新生成的电子表格