在HBase 中如何创建表结构?创建如下的表结构,并添加、删除和查询数据。RowKey是"com.google" ColumnFamily:CF1 Column:C11 "C11 good" Column:C12 "C12 good" ColumnFamily:CF2 Column:C21 "C12 bad" Column:C22 "C12 bad" TimeStamp T1
时间: 2023-07-19 19:10:47 浏览: 139
在 HBase 中创建表结构,需要使用 HBase Shell 或 HBase Java API。
1. 使用 HBase Shell 创建表结构:
打开 HBase Shell,输入以下命令:
create 'table_name', 'column_family1', 'column_family2', ...
其中,table_name 为表名,column_family1、column_family2 为列族名。
创建表结构:
create 'my_table', 'CF1', 'CF2'
2. 使用 HBase Java API 创建表结构:
在 Java 代码中,使用 HBase Admin 类创建表结构:
```
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("my_table"));
HColumnDescriptor cf1 = new HColumnDescriptor("CF1");
HColumnDescriptor cf2 = new HColumnDescriptor("CF2");
tableDescriptor.addFamily(cf1);
tableDescriptor.addFamily(cf2);
admin.createTable(tableDescriptor);
admin.close();
connection.close();
```
其中,HTableDescriptor 代表表的描述信息,HColumnDescriptor 代表列族的描述信息。
创建表结构后,就可以添加、删除和查询数据了。使用 HBase Shell 或 HBase Java API 均可。
在 HBase Shell 中添加数据:
```
put 'my_table', 'com.google', 'CF1:C11', 'C11 good'
put 'my_table', 'com.google', 'CF1:C12', 'C12 good'
put 'my_table', 'com.google', 'CF2:C21', 'C12 bad'
put 'my_table', 'com.google', 'CF2:C22', 'C12 bad'
```
在 Java 代码中添加数据:
```
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("my_table"));
Put put = new Put(Bytes.toBytes("com.google"));
put.addColumn(Bytes.toBytes("CF1"), Bytes.toBytes("C11"), Bytes.toBytes("C11 good"));
put.addColumn(Bytes.toBytes("CF1"), Bytes.toBytes("C12"), Bytes.toBytes("C12 good"));
put.addColumn(Bytes.toBytes("CF2"), Bytes.toBytes("C21"), Bytes.toBytes("C12 bad"));
put.addColumn(Bytes.toBytes("CF2"), Bytes.toBytes("C22"), Bytes.toBytes("C12 bad"));
table.put(put);
table.close();
connection.close();
```
在 HBase Shell 中查询数据:
```
get 'my_table', 'com.google'
```
在 Java 代码中查询数据:
```
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("my_table"));
Get get = new Get(Bytes.toBytes("com.google"));
Result result = table.get(get);
for (Cell cell : result.listCells()) {
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)) + " : " + Bytes.toString(CellUtil.cloneValue(cell)));
}
table.close();
connection.close();
```
在 HBase Shell 中删除数据:
```
delete 'my_table', 'com.google', 'CF1:C11'
```
在 Java 代码中删除数据:
```
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("my_table"));
Delete delete = new Delete(Bytes.toBytes("com.google"));
delete.addColumn(Bytes.toBytes("CF1"), Bytes.toBytes("C11"));
table.delete(delete);
table.close();
connection.close();
```
阅读全文