繁体   English   中英

HBase Column数据类型

[英]HBase Column data types

我正在研究hbase java客户端,我能够从hbase数据存储中获取元数据,如所有表名,列族和列,但我无法获取我在谷歌搜索的hbase列的数据类型并且知道不可能获得数据类型

借助hbase java客户端HTableDescriptorHColumnDescriptor

另一个问题是我正在以这种方式获取元数据我认为这不是任何人可以优化此代码的方式真的会帮助我

public List<ColumnFamily> getMetaDataOfTable(String tableName) {
        HTable table = null;
        try {
            HTableDescriptor tableDescriptor = admin.getTableDescriptor(Bytes
                    .toBytes(tableName));
            HColumnDescriptor[] columnDescriptor = tableDescriptor
                    .getColumnFamilies();
            for (HColumnDescriptor temp : columnDescriptor) {
                ColumnFamily columnFamily = new ColumnFamily();
                columnFamily.setName(temp.getNameAsString());
                columnFamilies.add(columnFamily);
            }

            table = new HTable(conf, tableName);
            Scan scan = new Scan();

            for (ColumnFamily columnFamily : columnFamilies) {
                scan.addFamily(Bytes.toBytes(columnFamily.getName()));
                ResultScanner scanner = table.getScanner(scan);
                for (Result result = scanner.next(); result != null; result = scanner
                        .next()) {

                    Map<byte[], byte[]> map = result.getFamilyMap(Bytes
                            .toBytes(columnFamily.getName()));
                    columnFamily.setColumnsList(getColumns(map));
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                table.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return columnFamilies;
    }

如果你能谢谢,请帮助我

使用HBase您只能使用列族,并且它们不能保留类型。 至少在我使用的版本0.98之前。

无论如何,列族应该用于对列进行分组,使得每组列都用于其他内容,但不限制使用。

此外,建议的最大列族数为3。

现在,回到你的问题,目前没有机制来定义HBase列,只有族和内部族,你可以动态地设置列的值。

基本上HBase的一行是一组单元格,每个单元格由列名称标识。 数据以二进制形式存储,您需要具有数据的编解码器。 Bytes.toXXX方法可用于编码/解码数据。

HBase书籍是一个很好的参考,你也可以先看看数据模型 ,并清楚地看到结构。

如果要使用HBase指定列类型,可以使用Apache Phoenix(一个SQL层/驱动器到HBase):

https://phoenix.apache.org/language/datatypes.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM