错误:构造函数htable(配置字符串)已弃用

yvfmudvl  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(760)

我正在使用cdh 5.4.2并尝试创建hbase表,代码段如下:

Configuration conf = HBaseConfiguration.create(new Configuration());
        HBaseAdmin hba = new <strike>HBaseAdmin</strike>(conf);
        if(!hba.tableExists(args[0])){
            HTableDescriptor ht = new      <strike>HTableDescriptor</strike>    (args[0]);
            ht.addFamily(new HColumnDescriptor("sample"));

有一个 Deprecated 错误。
如何避免这些警告?
我是否需要为cdh 5.4.2添加任何特定的jar?

o8x7eapl

o8x7eapl1#

如果需要检索表以供使用,可以使用 Connection.getTable(TableName) 但如果需要创建表,请使用 TableDescriptorBuilder 以及 Admin.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)
f45qwnt8

f45qwnt82#

示例代码供您参考。假设hbase以独立模式运行。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

public class HBaseSample {

    public static void main(String[] args) {
        Configuration conf = HBaseConfiguration.create();
        try {           
            Connection conn = ConnectionFactory.createConnection(conf);
            Admin hAdmin = conn.getAdmin();

            HTableDescriptor hTableDesc = new HTableDescriptor(
                    TableName.valueOf("Customer"));
            hTableDesc.addFamily(new HColumnDescriptor("name"));
            hTableDesc.addFamily(new HColumnDescriptor("contactinfo"));
            hTableDesc.addFamily(new HColumnDescriptor("address"));

            hAdmin.createTable(hTableDesc);

            System.out.println("Table created Successfully...");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
jei2mxaa

jei2mxaa3#

只是个警告。但是您不应该在代码中使用不推荐使用的方法。
代替:

HBaseAdmin admin = new HBaseAdmin(conf);

您应该使用:

Connection conn =ConnectionFactory.createConnection(conf);
Admin admin  = conn.getAdmin();

相关问题