HBase的Put操作基础数据类型

本文介绍了如何使用HBase的Put操作处理基础数据类型,如String、Byte、Short、Integer、Long。通过获取对象字段名,筛选非空值,转化为byte[],并针对Byte类型做特殊处理,确保数据正确写入HBase表格。

        以基础的数据类型String、Byte、Short、Integer、Long为例,介绍在HBase中,如何通过Put操作将类实例对象中的基础数据类型数据写入HBase。假设HBase的表字段名称是以类对象所定义字段名的大写。

1,获取类对象字段名,获取一个类对象的所有定义的字段名哈希表,字段名大写-字段名。

private void setClassColumns() {
        Field[] fields = TestClass.class.getDeclaredFields();
        testClassColumns = Maps.newHashMap();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < fields.length; i++) {
           //HBase表字段名是类对象定义字段的大写形式
            testClassColumns.put(fields[i].getName().toUpperCase(), fields[i].getName());
        }
    }

2,根据获取实例化后对象字段值,获取非空值的数据及对应的字段名,分别写入一个List<Object> values以及List<String> columns列表。

List<Object> values = new ArrayList<>(); //对象实例非空字段list
List<String> cloumns= new ArrayList<>(); //对象实例实际非空字段的字段名。
private void executeClass2Values(TestClass testClass){
        
        try {
            for (Map.Entry map : testClassColumns.entrySet())
### HBase支持的数据类型 HBase本身并不像传统的关系型数据库那样定义严格的数据类型,而是主要依赖于字节数组(`byte[]`)来存储数据[^1]。这意味着所有的键值对都以二进制形式存在,开发者可以根据实际需求自行解析这些字节流并转换成所需的数据类型。 #### 数据类型的灵活性 由于HBase中的所有数据均以`byte[]`的形式存储,因此理论上它可以支持任何可以序列化为字节数组的数据类型。常见的数据类型及其用法如下: - **字符串 (String)** 字符串是最常用的一种数据类型,可以通过编码方式将其转化为字节数组存入HBase中。通常采用UTF-8编码进行转化。 ```java byte[] value = Bytes.toBytes("example string"); String result = Bytes.toString(value); ``` - **整数 (Integer/Long)** 整数值也可以通过特定方法转化为字节数组,并从中恢复原始值。 ```java byte[] intBytes = Bytes.toBytes(12345); // 将int转为bytes[] int intValue = Bytes.toInt(intBytes); // 从bytes[]还原int byte[] longBytes = Bytes.toBytes(9876543210L); // 长整形处理同理 long longValue = Bytes.toLong(longBytes); ``` - **浮点数 (Float/Double)** 浮点数同样能够被转化为字节数组保存到HBase里。 ```java byte[] floatBytes = Bytes.toBytes((float) 3.14F); float floatValue = Bytes.toFloat(floatBytes); byte[] doubleBytes = Bytes.toBytes(3.14D); double doubleValue = Bytes.toDouble(doubleBytes); ``` - **布尔值 (Boolean)** 布尔值可以用单个字节表示其真伪状态。 ```java byte[] boolBytesTrue = Bytes.toBytes(true); boolean boolTrue = Bytes.toBoolean(boolBytesTrue); byte[] boolBytesFalse = Bytes.toBytes(false); boolean boolFalse = Bytes.toBoolean(boolBytesFalse); ``` - **复杂对象** 对于复杂的自定义类或者集合类型,则需先实现序列化机制再存取。 ```java MyCustomObject obj = new MyCustomObject(); byte[] serializedObj = serialize(obj); // 自己编写serialize函数完成对象序列化过程 MyCustomObject deserializedObj = deserialize(serializedObj); // 反之亦然 ``` 以上列举了几种典型的数据类型以及它们如何映射至HBase内部使用的字节数组上[^3]。 ```java // 创建配置实例连接集群 import org.apache.hadoop.hbase.HBaseConfiguration; HBaseConfiguration hconfig = new HBaseConfiguration(); // 使用API操作表数据示例代码片段 Put putRecord = new Put(Bytes.toBytes(rowKey)); putRecord.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnQualifier), Bytes.toBytes(dataValue)); table.put(putRecord); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值