Este tópico descreve como acessar uma instância do ApsaraDB for HBase Performance-enhanced Edition por meio da API Java do ApsaraDB for HBase.
Pré-requisitos
SDK Java instalado. Para mais informações, consulte Atualizar o SDK Java do HBase.
-
Se a aplicação estiver implantada em uma instância ECS, verifique se ela e a instância do ApsaraDB for HBase Performance-enhanced Edition atendem às seguintes condições de conectividade de rede. Para visualizar os detalhes da instância ECS, consulte Visualizar informações da instância.
As instâncias devem estar na mesma região. Recomendamos posicioná-las na mesma zona de disponibilidade para reduzir a latência de rede.
-
As instâncias utilizam o mesmo tipo de rede.
NotaUma VPC oferece maior segurança; portanto, recomendamos seu uso. Caso o tipo de rede seja VPC, certifique-se de que ambas as instâncias estejam na mesma VPC.
Endereço IP da instância ECS ou do cliente adicionado à lista de permissões da instância do ApsaraDB for HBase Performance-enhanced Edition. Para mais informações, consulte Configurar uma lista de permissões.
Procedimento
-
Inicialize a configuração do HBase. No projeto, insira o código abaixo e configure os parâmetros conforme descrito na tabela a seguir.
// Create a Configuration object. Configuration conf = HBaseConfiguration.create(); // The Java API endpoint of the cluster. You can obtain the endpoint on the Database Connection page on the console. conf.set("hbase.zookeeper.quorum", "ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020"); // Set the username and password. conf.set("hbase.client.username", "testuser"); conf.set("hbase.client.password", "password"); // If you directly depend on the Alibaba Cloud HBase client, you do not need to configure the connection.impl parameter. If you depend on alihbase-connector, you must configure this parameter. //conf.set("hbase.client.connection.impl", AliHBaseUEClusterConnection.class.getName());Parâmetro
Valor
Descrição
host:port
ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020
String de conexão do Java API endpoint da instância do ApsaraDB for HBase Performance-enhanced Edition. Para obter esse valor, acesse o console do ApsaraDB for HBase e clique em ID da instância desejada. No painel de navegação à esquerda, clique em Database Connection. Na seção Connection Information, localize o Java API endpoint.
username
testuser
Caso tenha esquecido o nome de usuário ou a senha, redefina-os no sistema de gerenciamento de clusters do ApsaraDB for HBase. Para mais informações, consulte Gerenciar usuários.
password
password
-
Crie uma conexão com a instância do ApsaraDB for HBase Performance-enhanced Edition.
Connection connection = ConnectionFactory.createConnection(conf);NotaCrie a conexão apenas uma vez durante o ciclo de vida da aplicação. A conexão é segura para threads e pode ser compartilhada entre todas elas. Para evitar vazamentos, feche o objeto Connection após a conclusão do programa. Também é possível usar uma instrução try-with-resources ou um bloco
try...finallypara prevenir vazamentos. -
Após estabelecer a conexão, use a API Java para acessar a instância do ApsaraDB for HBase Performance-enhanced Edition. Veja a seguir exemplos simples em Java.
NotaPara garantir compatibilidade com clientes HBase 1.x, este exemplo usa a sintaxe correspondente a essa versão. Se você usar um cliente HBase 2.x, algumas IDEs podem exibir avisos de
Deprecated, mas isso não afeta a operação.-
Instruções DDL
try (Admin admin = connection.getAdmin()){ // Create a table. HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename")); htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family"))); // Create a table with a single partition. // In production environments, we recommend pre-splitting the table based on your data characteristics. admin.createTable(htd); // Disable the table. admin.disableTable(TableName.valueOf("tablename")); // Truncate the table. admin.truncateTable(TableName.valueOf("tablename"), true); // Delete the table. admin.deleteTable(TableName.valueOf("tablename")); } -
Instruções DML
// The Table object is not thread-safe. Each thread must obtain a unique Table object from the Connection. try (Table table = connection.getTable(TableName.valueOf("tablename"))) { // Insert data. Put put = new Put(Bytes.toBytes("row")); put.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); table.put(put); // Read a single row. Get get = new Get(Bytes.toBytes("row")); Result res = table.get(get); // Delete a row. Delete delete = new Delete(Bytes.toBytes("row")); table.delete(delete); // Scan a range of data. Scan scan = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow")); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // Process the query result. // ... } scanner.close(); }
-