在Hive表上,我可以创建外部表来保存特定HDFS位置上的数据。我想在HBase上做类似的事情,这样就可以将HBase表数据保存在外部HDFS位置上。在类似于Hive的HBase上可以这样做吗?我想知道HDFS上保存HBase表数据的默认路径是什么?
谢谢
发布于 2020-12-18 16:59:40
简单来说,答案是否定的,HBase没有给您提供与Hive相同的外部表能力。
HBase的设计与Hive不同,使用不同的方法和软件来读取和写入数据。传统上,Hive使用MapReduce或Tez与HDFS中的数据交互,就像您的外部表一样,而HBase使用集群上运行的RegionServer进程的集合。通过设计,RegionServers共享HDFS中的目录树,它们在其中对文件进行操作。
在hbase.rootdir配置文件中有一个名为hbase-site.xml的属性,它在hbase-site.xml中为所有HBase数据文件设置根路径。该属性如下所示:
<property>
<name>hbase.rootdir</name>
<value>hdfs://hostname:8020/hbase</value>
</property> (没有必要手动创建这个目录,HBase会这样做。如果未设置此参数,则默认情况下,所有数据将进入hbase.tmp.dir的子目录,该子目录通常为/tmp。)
但是,这个配置设置是而不是,类似于在Hive中创建外部表。当将数据持久化到磁盘时,所有RegionServers都共享此HDFS路径。它不是用户在读取和写入数据时直接与之交互的目录。
https://stackoverflow.com/questions/65352312
复制相似问题