使用HBaseAPI创建一张表
时间: 2023-05-14 18:04:24 浏览: 197
可以使用以下代码创建一张表:
```
Configuration config = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(config);
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("myTable"));
tableDescriptor.addFamily(new HColumnDescriptor("myColumnFamily"));
admin.createTable(tableDescriptor);
```
其中,`myTable`是表的名称,`myColumnFamily`是列族的名称。这段代码使用了 HBase 的 Java API,需要先引入 HBase 的依赖。
相关问题
HbaseAPI现需一张表a用于存放用户粉丝数据,可以存粉丝有谁,可以存关注了谁
你可以使用 HBase Java API 来创建并操作表 a。下面是一个示例代码,可以创建表 a 并将用户粉丝数据存储到其中。
```java
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
String tableName = "a";
TableName tn = TableName.valueOf(tableName);
HTableDescriptor tableDescriptor = new HTableDescriptor(tn);
HColumnDescriptor cfDescriptor = new HColumnDescriptor(Bytes.toBytes("f"));
tableDescriptor.addFamily(cfDescriptor);
admin.createTable(tableDescriptor);
Table table = connection.getTable(tn);
String rowKey = "user1";
String followKey = "follow";
String fansKey = "fans";
// 存储用户粉丝数据
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes(followKey), Bytes.toBytes("user2,user3,user4"));
put.addColumn(Bytes.toBytes("f"), Bytes.toBytes(fansKey), Bytes.toBytes("user5,user6,user7"));
table.put(put);
// 获取用户粉丝数据
Get get = new Get(Bytes.toBytes(rowKey));
Result result = table.get(get);
byte[] followBytes = result.getValue(Bytes.toBytes("f"), Bytes.toBytes(followKey));
byte[] fansBytes = result.getValue(Bytes.toBytes("f"), Bytes.toBytes(fansKey));
String follow = Bytes.toString(followBytes);
String fans = Bytes.toString(fansBytes);
System.out.println("follow: " + follow);
System.out.println("fans: " + fans);
table.close();
connection.close();
```
在这个示例中,我们首先创建了一个名为 a 的表,并为其添加了一个名为 f 的列族。然后,我们使用 `Put` 对象向表中存储了一条用户粉丝数据,其中 row key 是 user1,follow 和 fans 列存储了用户的关注和粉丝数据。最后,我们使用 `Get` 对象从表中获取了用户粉丝数据,并将其输出到控制台。
需要注意的是,这个示例只是一个简单的示例,实际应用中,需要根据具体情况进行表的设计和数据存储。
给我一段hbase创建一张名为‘weijing’的表,主键为‘cf’的代码
下面是使用Java API创建一张名为‘weijing’的表,主键为‘cf’的代码:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.io.compress.CompressionAlgorithm;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseCreateTable {
public static void main(String[] args) throws Exception {
// 创建HBase配置对象
Configuration conf = HBaseConfiguration.create();
// 指定Zookeeper地址,多个地址以英文逗号分隔
conf.set("hbase.zookeeper.quorum", "localhost");
// 创建HBase连接对象
Connection conn = ConnectionFactory.createConnection(conf);
// 创建HBase管理员对象
Admin admin = conn.getAdmin();
// 创建表描述器对象
TableName tableName = TableName.valueOf("weijing");
TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(tableName)
.setColumnFamily(TableDescriptorBuilder.newBuilder(Bytes.toBytes("cf"))
.setCompressionType(CompressionAlgorithm.GZ)
.setBloomFilterType(BloomType.ROW)
.build())
.build();
// 创建表
admin.createTable(tableDescriptor);
// 关闭连接
admin.close();
conn.close();
}
}
```
其中,`setColumnFamily`方法用于设置表的列族,`setCompressionType`方法用于设置列族的压缩算法,`setBloomFilterType`方法用于设置列族的布隆过滤器类型。
阅读全文