Hbase 在HTableDescriptor中更改表名的推荐方法是什么?
使用hbase客户端v。1.1.2Hbase 在HTableDescriptor中更改表名的推荐方法是什么?,hbase,Hbase,使用hbase客户端v。1.1.2 HTableDescriptorAPI提供了两个公共构造函数: public HTableDescriptor(final TableName name) {... ... public HTableDescriptor(final HTableDescriptor desc) {... 和2种不推荐的更改表名的方法: @Deprecated public HTableDescriptor setName(byte[] name) {
HTableDescriptor
API提供了两个公共构造函数:
public HTableDescriptor(final TableName name) {...
...
public HTableDescriptor(final HTableDescriptor desc) {...
和2种不推荐的更改表名的方法:
@Deprecated
public HTableDescriptor setName(byte[] name) {
setName(TableName.valueOf(name));
return this;
}
@Deprecated
public HTableDescriptor setName(TableName name) {
this.name = name;
setMetaFlags(this.name);
return this;
}
没有关于用户应该做什么的评论
因此,要克隆一个HTableDescriptor
,选项是(a)使用第一个ctor并手动复制所有字段,或者(b)使用第二个ctor并仅使用不推荐的方法更改表名
推荐的方法是什么?为什么API似乎不鼓励直接更改名称,除非通过ctor?您似乎在寻找:
/**
*通过克隆作为参数传递的描述符来构造表描述符
*但是使用不同的表名。
*
*生成所提供描述符的深度副本。
*可以从不可修改的描述符生成可修改的描述符。
*@param name表名。
*@param desc描述符。
*/
公共HTableDescriptor(最终表名,最终HTableDescriptor描述){
遗憾的是,出于某种原因,我使用的是1.12,它没有包含这个ctor。@jordanpg好吧,如果您查看github代码,您会发现即使在主分支中,不推荐的方法仍然是更改表名的唯一方法。
/**
* Construct a table descriptor by cloning the descriptor passed as a parameter
* but using a different table name.
* <p>
* Makes a deep copy of the supplied descriptor.
* Can make a modifiable descriptor from an UnmodifyableHTableDescriptor.
* @param name Table name.
* @param desc The descriptor.
*/
public HTableDescriptor(final TableName name, final HTableDescriptor desc) {