类型HTable(config, tablename)已被弃用。应该使用什么替代品?

18

我可以使用什么替代HTable(config,tablename)?

这种方法已经被弃用。无论在哪个示例中,他们都使用了这种或另一种构造函数,这也已被弃用。


1
你是不是想说HTable(config, tablename)已经被弃用了? - Vinkal
哦!!!是的,我是指HTable(config, tablename).. 我会编辑它! - dino
请查看我的答案。 - Vinkal
3个回答

26

手动构建HTable对象现已过时,请改用Connection来实例化一个Table

使用Connection,可以通过Connection.getTable(TableName)检索表的实现。

示例:

Connection connection = ConnectionFactory.createConnection(config);

Table table = connection.getTable(TableName.valueOf("table1"));

try 
{
   // Use the table as needed, for a single operation and a single thread
} 
finally
{
   table.close();
   connection.close();
}

1
当在Pig中使用此表格,并且将Tuple传递给UDF的eval函数时,我是否需要为每个Tuple创建和关闭连接?这将会对性能产生很大影响,是否有其他方法可以解决? - ankursingh1000
你可以在关闭表之前执行多个操作。连接也是如此。 - GoalBased
有没有办法保持持久连接,就像旧版本提供的那样?@UserszrKs - Sukhmeet Singh

2

Connection.getTable(TableName)仅用于检索表格。

如果您需要创建一个表格,请使用TableDescriptorBuilderAdmin.createTable(TableDescriptor)

例如:

val tableDescriptor: TableDescriptor = TableDescriptorBuilder
                          .newBuilder(TableName.valueOf("mytable"))
                          .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder("myId".getBytes).build())
                          .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder("data".getBytes).build())
                          .build()

admin.createTable(tableDescriptor)

0

HTable不再是客户端API。请改用Table。在api文档这里中有描述:

HTable不再是客户端API。请改用Table。从hbase-1.0.0开始,它被标记为InterfaceAudience.Private,表示这是一个HBase内部类,如Hadoop接口分类中所定义的那样。没有向后源/二进制兼容性的保证,方法或类可能会发生更改或消失而不受弃用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接