【问题标题】:The type HTable(config,tablename) is deprecated. What use instead?不推荐使用 HTable(config,tablename) 类型。有什么用呢?
【发布时间】:2016-01-24 17:41:21
【问题描述】:

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

此方法已弃用。在每个示例中,我都能发现他们使用这个或另一个构造函数,这也已被弃用。

【问题讨论】:

  • 您的意思是 HTable(config, tablename) 已弃用,不是吗?
  • 哦!!!是的,我的意思是 HTable(config, tablename).. 我会编辑它!
  • 请看我的回答。

标签: java hadoop hbase deprecated


【解决方案1】:

手动构造 HTable 对象已被弃用。请改用 Connection 来实例化 Table

连接,使用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();
}

【讨论】:

  • 当这个表用在一个 Pig 中,其中一个元组被传递给 UDF 的 eval 函数时,我是否需要为每个元组创建和关闭连接,这真的会影响性能有没有其他方法去做
  • 关闭前可以对表进行多项操作。连接也是如此。
  • 有没有办法像旧版本一样保持持久连接? @UserszrKs
【解决方案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)

【讨论】:

    【解决方案3】:

    HTable 不再是客户端 API。请改用表格。这是api文档here中的描述:

    HTable 不再是客户端 API。请改用表格。从 hbase-1.0.0 开始,它被标记为 InterfaceAudience.Private,表明这是 Hadoop 接口分类中定义的 HBase 内部类。不保证向后源代码/二进制兼容性和方法,或者类可以更改或消失而无需弃用。

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2018-05-13
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2015-01-08
      相关资源
      最近更新 更多