BufferedMutatorParams params = new BufferedMutatorParams(TableName.valueOf("sensor_fuelgas_history")); //设置缓存大小 params.writeBufferSize(10 * 1024 * 1024L); mutator = connection.getBufferedMutator(params); // 存入数据 Put put = new Put(datas.getId().getBytes()); put.addColumn("info".getBytes(), "operaterTime".getBytes(), datas.getOperaterTime().getBytes()); put.addColumn("info".getBytes(), "deviceId".getBytes(), datas.getDeviceId().getBytes()); put.addColumn("info".getBytes(), "signal".getBytes(), datas.getSignal().getBytes()); put.addColumn("info".getBytes(), "voltage".getBytes(), datas.getVoltage().getBytes()); put.addColumn("info".getBytes(), "temperature".getBytes(), datas.getTemperature().getBytes()); put.addColumn("info".getBytes(), "concentration".getBytes(), datas.getConcentration().getBytes()); put.addColumn("info".getBytes(), "state".getBytes(), datas.getState().getBytes()); put.addColumn("info".getBytes(), "distance".getBytes(), datas.getDistance().getBytes()); put.addColumn("info".getBytes(), "communityIdentity".getBytes(), datas.getCommunityIdentity().getBytes()); put.addColumn("info".getBytes(), "alarm".getBytes(), datas.getAlarm().getBytes()); put.addColumn("info".getBytes(), "reserved".getBytes(), datas.getReserved().getBytes()); put.addColumn("info".getBytes(), "submitTime".getBytes(), datas.getSubmitTime().getBytes()); put.addColumn("info".getBytes(), "lat".getBytes(), datas.getLat().getBytes()); put.addColumn("info".getBytes(), "lon".getBytes(), datas.getLon().getBytes()); put.addColumn("info".getBytes(), "acceptTime".getBytes(), datas.getAcceptTime().getBytes()); put.addColumn("info".getBytes(), "errorConcentration".getBytes(), datas.getErrorConcentration().getBytes()); put.addColumn("info".getBytes(), "errorState".getBytes(), datas.getErrorState().getBytes()); put.addColumn("info".getBytes(), "tmp".getBytes(), datas.getTmp().getBytes()); put.addColumn("info".getBytes(), "wea".getBytes(), datas.getWea().getBytes()); put.addColumn("info".getBytes(), "newtmp".getBytes(), datas.getNewtmp().getBytes()); listPut.add(put); if(listPut.size()>=3000){ mutator.mutate(listPut); mutator.flush(); listPut.clear(); count = count - 1; } if(count == 0 && remain ==listPut.size()){ mutator.mutate(listPut); mutator.flush(); listPut.clear(); } 写入hbase时间太长 优化下
时间: 2024-04-13 15:26:54 浏览: 22
要优化写入HBase的时间,可以考虑以下几点:
1. 调整写缓冲区大小:根据实际情况,适当调整写缓冲区的大小,以提高写入性能。在上述代码中,已经设置了写缓冲区大小为10MB,可以根据数据的大小和网络状况进行调整。
2. 批量写入数据:在上述代码中,使用了一个List来存储Put对象,当List中的元素达到一定数量时,才进行批量写入和刷新操作。这样可以减少网络传输的次数,提高写入性能。可以根据实际情况调整批量写入的阈值。
3. 多线程并发写入:可以考虑使用多线程并发进行数据写入操作,以提高写入性能。可以将数据分成多个批次,每个批次由一个线程负责写入,然后再进行合并。
4. 使用异步写入:HBase提供了异步写入的功能,可以将写入操作放入异步队列中,在后台进行批量写入。这样可以减少等待时间,提高写入性能。
5. 调整HBase配置:根据实际情况,可以调整HBase的相关配置参数,如RPC重试策略、RPC重试暂停时间等,以优化写入性能。
需要根据具体的场景和需求进行优化,可以结合以上几点进行尝试,以提高写入HBase的性能。
相关问题
_isAdmin__ = None allModels = apps.get_app_config('main').get_models() for m in allModels: if m.__tablename__==tablename: try: __isAdmin__ = m.__isAdmin__ except: __isAdmin__ = None break
这是一个 Python 代码片段,主要用于获取指定表名的模型对象,并从中获取一个名为 `__isAdmin__` 的属性值。该代码片段包括以下几个步骤:
1. 通过 `apps.get_app_config()` 方法获取应用程序 `main` 的配置对象;
2. 调用 `get_models()` 方法获取应用程序 `main` 中注册的所有模型对象;
3. 遍历所有模型对象,查找表名与指定表名相同的模型对象;
4. 如果找到了指定表名的模型对象,则尝试获取其 `__isAdmin__` 属性值;
5. 如果获取成功,则将其赋值给变量 `__isAdmin__`,并跳出循环;
6. 如果获取失败,则将变量 `__isAdmin__` 的值设置为 `None`。
需要注意的是,代码中的 `__tablename__` 和 `__isAdmin__` 可能是模型对象的属性或方法,具体含义需要参考代码中的定义。
TableName deviceMessageTab = TableName.valueOf()如果表未创建,会自动创建表吗
在使用 HBase API 创建表时,如果表不存在,则会自动创建表。在您的代码中,如果指定的表名称 `deviceMessageTab` 不存在,则会在 HBase 中创建一个新的表,如果已存在同名表,则不会创建新表。以下是一个简单的示例代码:
```java
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
TableName tableName = TableName.valueOf("my_table");
// 如果表不存在,则创建表
if (!admin.tableExists(tableName)) {
HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
// 添加列族
tableDescriptor.addFamily(new HColumnDescriptor("cf1"));
tableDescriptor.addFamily(new HColumnDescriptor("cf2"));
admin.createTable(tableDescriptor);
}
// 关闭连接
admin.close();
connection.close();
```
在上面的示例中,如果名为 `my_table` 的表不存在,则会创建一个新的表,并添加名为 `cf1` 和 `cf2` 的两个列族。如果表已经存在,则不会创建新表。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)