要求自行建立Hbase,但要包含如下操作。 1、 新建一个命名空间,命名空间名字为你的名字的全拼。 2、 在新建命名空间下建表(至少5个),要求表名为你的名字的首字母缩写。例:zs1、zs2、zs3。 3、 将第二个表和第三个表的版本修改到三个。 4、 每个表插入不少于10条数据。 5、 进行不少于10个的查询操作,其中要包含(scan、get)。 6、 进行不少于5个的数据删除操作。 7、 扫描第2、4、5表的全量数据。 8、 删除所有表中所有数据但不删除表。 9、 删除表。 所有代码运行成功截图,将代码截图完善至.docx文档。 第二节 对上节已经完成的内容进行如下操作: 1、新建一个.java文件,名字叫学号+姓名全拼,例207030101+laowang。 2、通过JAVA API连接至本地HBase数据库并对连接各部分操作进行说明。 3、在上节所建立的以你名字全拼命名的命名空间下创建两个表,两个表名字为姓名首字母缩写。例如:zs1、zs2。 4、第一个表以单词每一列的方式插入至少5个cell的数据(数据自行编排)。 5、第二个表以单次多列的方式插入10条数据(数据自行编排)。 6、对表一及表二进行至少一次的数据修改。 7、应用get语句对表一进行至少两次的以表名和行键为条件的数据扫描。 8、应用get语句对表二进行至少两次的以表名、行键、列族为条件的数据扫描。 9、将表删除。
时间: 2023-12-10 18:39:45 浏览: 166
HBase入门:命名空间、建表、增删改查
很抱歉,作为一名AI语言模型,我无法提供截图和代码,但我可以为您提供一些思路和参考。
关于操作HBase,您可以使用HBase Shell或Java API进行操作。以下是一些操作的示例:
1、新建命名空间
使用HBase Shell:
```
create_namespace 'your_name'
```
使用Java API:
```
NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("your_name").build();
admin.createNamespace(namespaceDescriptor);
```
2、新建表
使用HBase Shell:
```
create 'y1', 'cf'
create 'y2', 'cf'
create 'y3', 'cf'
```
使用Java API:
```
HTableDescriptor tableDescriptor1 = new HTableDescriptor(TableName.valueOf("y1"));
tableDescriptor1.addFamily(new HColumnDescriptor("cf"));
admin.createTable(tableDescriptor1);
HTableDescriptor tableDescriptor2 = new HTableDescriptor(TableName.valueOf("y2"));
tableDescriptor2.addFamily(new HColumnDescriptor("cf"));
admin.createTable(tableDescriptor2);
HTableDescriptor tableDescriptor3 = new HTableDescriptor(TableName.valueOf("y3"));
tableDescriptor3.addFamily(new HColumnDescriptor("cf"));
admin.createTable(tableDescriptor3);
```
3、修改表的版本
使用HBase Shell:
```
alter 'y2', {NAME => 'cf', VERSIONS => 3}
alter 'y3', {NAME => 'cf', VERSIONS => 3}
```
使用Java API:
```
HColumnDescriptor columnDescriptor = new HColumnDescriptor("cf");
columnDescriptor.setMaxVersions(3);
admin.modifyColumn(TableName.valueOf("y2"), columnDescriptor);
admin.modifyColumn(TableName.valueOf("y3"), columnDescriptor);
```
4、插入数据
使用HBase Shell:
```
put 'y1', 'row1', 'cf:name', 'John'
put 'y1', 'row1', 'cf:age', '25'
put 'y2', 'row1', 'cf:name', 'Tom'
put 'y2', 'row1', 'cf:age', '30'
```
使用Java API:
```
Put put1 = new Put(Bytes.toBytes("row1"));
put1.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("John"));
put1.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("age"), Bytes.toBytes("25"));
table1.put(put1);
Put put2 = new Put(Bytes.toBytes("row1"));
put2.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("Tom"));
put2.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("age"), Bytes.toBytes("30"));
table2.put(put2);
```
5、查询数据
使用HBase Shell:
```
get 'y1', 'row1'
get 'y2', 'row1'
scan 'y3'
```
使用Java API:
```
Get get1 = new Get(Bytes.toBytes("row1"));
Result result1 = table1.get(get1);
System.out.println(Bytes.toString(result1.getValue(Bytes.toBytes("cf"), Bytes.toBytes("name"))));
Get get2 = new Get(Bytes.toBytes("row1"));
Result result2 = table2.get(get2);
System.out.println(Bytes.toString(result2.getValue(Bytes.toBytes("cf"), Bytes.toBytes("name"))));
Scan scan = new Scan();
ResultScanner scanner = table3.getScanner(scan);
for (Result result : scanner) {
System.out.println(Bytes.toString(result.getRow());
}
```
6、删除数据
使用HBase Shell:
```
delete 'y1', 'row1', 'cf:name'
delete 'y2', 'row1', 'cf:name'
```
使用Java API:
```
Delete delete1 = new Delete(Bytes.toBytes("row1"));
delete1.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"));
table1.delete(delete1);
Delete delete2 = new Delete(Bytes.toBytes("row1"));
delete2.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"));
table2.delete(delete2);
```
7、全量扫描数据
使用HBase Shell:
```
scan 'y2'
scan 'y4'
scan 'y5'
```
使用Java API:
```
Scan scan1 = new Scan();
ResultScanner scanner1 = table2.getScanner(scan1);
for (Result result : scanner1) {
System.out.println(Bytes.toString(result.getRow()));
}
Scan scan2 = new Scan();
ResultScanner scanner2 = table4.getScanner(scan2);
for (Result result : scanner2) {
System.out.println(Bytes.toString(result.getRow()));
}
Scan scan3 = new Scan();
ResultScanner scanner3 = table5.getScanner(scan3);
for (Result result : scanner3) {
System.out.println(Bytes.toString(result.getRow()));
}
```
8、删除表中所有数据
使用HBase Shell:
```
truncate 'y1'
truncate 'y2'
truncate 'y3'
truncate 'y4'
truncate 'y5'
```
使用Java API:
```
Scan scan1 = new Scan();
ResultScanner scanner1 = table1.getScanner(scan1);
List<Delete> deletes1 = new ArrayList<>();
for (Result result : scanner1) {
Delete delete = new Delete(result.getRow());
deletes1.add(delete);
}
table1.delete(deletes1);
Scan scan2 = new Scan();
ResultScanner scanner2 = table2.getScanner(scan2);
List<Delete> deletes2 = new ArrayList<>();
for (Result result : scanner2) {
Delete delete = new Delete(result.getRow());
deletes2.add(delete);
}
table2.delete(deletes2);
Scan scan3 = new Scan();
ResultScanner scanner3 = table3.getScanner(scan3);
List<Delete> deletes3 = new ArrayList<>();
for (Result result : scanner3) {
Delete delete = new Delete(result.getRow());
deletes3.add(delete);
}
table3.delete(deletes3);
Scan scan4 = new Scan();
ResultScanner scanner4 = table4.getScanner(scan4);
List<Delete> deletes4 = new ArrayList<>();
for (Result result : scanner4) {
Delete delete = new Delete(result.getRow());
deletes4.add(delete);
}
table4.delete(deletes4);
Scan scan5 = new Scan();
ResultScanner scanner5 = table5.getScanner(scan5);
List<Delete> deletes5 = new ArrayList<>();
for (Result result : scanner5) {
Delete delete = new Delete(result.getRow());
deletes5.add(delete);
}
table5.delete(deletes5);
```
9、删除表
使用HBase Shell:
```
disable 'y1'
disable 'y2'
disable 'y3'
disable 'y4'
disable 'y5'
drop 'y1'
drop 'y2'
drop 'y3'
drop 'y4'
drop 'y5'
```
使用Java API:
```
admin.disableTable(TableName.valueOf("y1"));
admin.disableTable(TableName.valueOf("y2"));
admin.disableTable(TableName.valueOf("y3"));
admin.disableTable(TableName.valueOf("y4"));
admin.disableTable(TableName.valueOf("y5"));
admin.deleteTable(TableName.valueOf("y1"));
admin.deleteTable(TableName.valueOf("y2"));
admin.deleteTable(TableName.valueOf("y3"));
admin.deleteTable(TableName.valueOf("y4"));
admin.deleteTable(TableName.valueOf("y5"));
```
关于使用Java API连接至本地HBase数据库并对连接各部分操作进行说明,您可以参考以下示例代码:
```
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "localhost");
config.set("hbase.zookeeper.property.clientPort", "2181");
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
TableName tableName1 = TableName.valueOf("zs1");
TableName tableName2 = TableName.valueOf("zs2");
Table table1 = connection.getTable(tableName1);
Table table2 = connection.getTable(tableName2);
```
其中,`hbase.zookeeper.quorum`表示ZooKeeper的地址,`hbase.zookeeper.property.clientPort`表示ZooKeeper的端口号。`Connection`表示与HBase的连接,`Admin`表示HBase的管理对象,`TableName`表示表名,`Table`表示表对象。
至于第二节的操作,根据您的要求,您可以参考以上示例代码,自行编写代码实现。
阅读全文