我不确定发生了什么。我昨天使用以下代码在hbase中创建了表。
我使用此命令启动hbase。
hbase-2.0.0/bin$ ./start-hbase.sh
创建表的代码
private void createStudentTable(String workspace) {
List<ColumnFamilyDescriptor> colms = new ArrayList<>();
colms.add(ColumnFamilyDescriptorBuilder.of("id"));
colms.add(ColumnFamilyDescriptorBuilder.of("name"));
TableDescriptor desc = TableDescriptorBuilder.newBuilder(TableName.valueOf(workspace + "_an_data"))
.setColumnFamilies(colms)
.build();
hbaseAdmin.createTable(desc); //class variable
}
我使用命令关闭了hbase
hbase-2.0.0/bin$ ./stop-hbase.sh
关闭我的系统,第二天醒来,启动hbase。
登录到shell,运行list
命令会得到结果
TABLE
0 row(s)
我误会了吗? hbase不是文件内存数据库吗?它在内存中吗?
我在DBeaver中使用了phoenix驱动程序
答案 0 :(得分:1)
默认情况下,hbase.rootdir位于/ tmp中,每次重启时都会将其清除。更新hbase-site.xml以使用您选择的目录。
答案 1 :(得分:0)
举例说明@gagan的答案
配置文件:/hbase-2.0.0/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/pasu/apps/hbase-2.0.0</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/pasu/apps/hbase-2.0.0/data</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>