Após estabelecer uma conexão de rede entre o MaxCompute e o ApsaraDB for HBase, crie uma tabela externa mapeada para uma tabela em um cluster do ApsaraDB for HBase Standard Edition ou Performance-enhanced Edition. Use essas tabelas externas para sincronizar dados com o MaxCompute para ETL, executar consultas federadas ou gravar dados do MaxCompute de volta no ApsaraDB for HBase. Este tópico descreve como criar uma tabela externa do ApsaraDB for HBase.
Informações básicas
O ApsaraDB for HBase é um banco de dados distribuído compatível com o protocolo de acesso padrão do HBase, disponível nas edições Standard, Performance-enhanced e Serverless. O MaxCompute oferece suporte apenas ao acesso a clusters do ApsaraDB for HBase Standard Edition ou ApsaraDB for HBase Performance-enhanced Edition.
Estabeleça primeiro uma conexão VPC entre eles. Para acessar o ApsaraDB for HBase por meio de uma tabela externa, configure um link de rede entre o MaxCompute e a VPC e adicione os endereços IP necessários à lista de permissões do ApsaraDB for HBase. Para mais informações, consulte Set a whitelist.
Também é possível criar uma instância do ApsaraDB for HBase Performance-enhanced Edition no console do Lindorm. Para criar uma tabela externa nesse cenário, consulte Lindorm external tables. Este tópico descreve como criar uma tabela externa para uma instância do ApsaraDB for HBase criada no console do ApsaraDB for HBase.
Pré-requisitos
Antes de criar uma tabela externa do ApsaraDB for HBase, certifique-se de que os seguintes requisitos foram atendidos:
-
Crie e configure um cluster do ApsaraDB for HBase Standard Edition ou ApsaraDB for HBase Performance-enhanced Edition.
Para mais informações sobre como adquirir e configurar um cluster do ApsaraDB for HBase Standard Edition, consulte Quick start for ApsaraDB for HBase Standard Edition.
Para mais informações sobre como adquirir e configurar um cluster do ApsaraDB for HBase Performance-enhanced Edition, consulte Quick start for ApsaraDB for HBase Performance-enhanced Edition.
-
Crie uma tabela no cluster do ApsaraDB for HBase usando um cliente HBase.
Para mais informações sobre como criar uma tabela no ApsaraDB for HBase, consulte Introduction to HBase Shell.
Para fins de demonstração, este tópico pressupõe que uma tabela chamada mf_hbase_test_t foi criada no cluster do ApsaraDB for HBase Standard Edition ou ApsaraDB for HBase Performance-enhanced Edition usando os seguintes comandos:
-- Create an HBase table. create 'mf_hbase_test_t', 'f' -- Insert data. In this example, '1' is the RowKey, 'f' is the column family, 'col1' is the column qualifier, and 'hello' is the column value. put 'mf_hbase_test_t', '1', 'f:col1', 'hello' -
Crie o projeto do MaxCompute de destino a ser associado à tabela do ApsaraDB for HBase.
Para mais informações sobre como criar um projeto do MaxCompute, consulte Create a MaxCompute project.
-
Instale o cliente do MaxCompute.
Para mais informações sobre como instalar o cliente do MaxCompute, consulte Install and configure the MaxCompute client.
-
Estabeleça uma conexão de rede entre o MaxCompute e o ApsaraDB for HBase usando uma solução de conexão VPC.
Para mais informações sobre soluções de conexão VPC, consulte Network connection process.
Limites
A criação de tabelas externas do ApsaraDB for HBase para conectar o MaxCompute ao ApsaraDB for HBase tem suporte apenas nas seguintes regiões: China (Beijing), China (Shanghai), China (Zhangjiakou), China (Ulanqab), China (Hangzhou), China (Shenzhen), China (Hong Kong), China East 2 Finance Cloud (Zone F), Japan (Tokyo), Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Germany (Frankfurt), US (Silicon Valley) e US (Virginia). Para informações sobre como estabelecer uma conexão de rede, consulte Network connection process.
Após o estabelecimento da conexão de rede, o MaxCompute acessa apenas a VPC especificada. Para acessar outra VPC na mesma região ou em uma região diferente, estabeleça uma conexão de rede da VPC conectada para a outra VPC.
Tabelas externas permitem acesso apenas a clusters do ApsaraDB for HBase 2.x.
Tabelas externas do ApsaraDB for HBase não oferecem suporte a clusters EMR HBase.
A propriedade
clusternão tem suporte para tabelas externas do ApsaraDB for HBase.
Observações de uso
Ao ler dados da tabela source do ApsaraDB for HBase, se a tabela source tiver menos colunas do que o esquema da tabela externa, as colunas ausentes serão preenchidas com NULL. Caso a tabela source possua mais colunas, as colunas extras serão ignoradas.
Sintaxe da tabela externa do HBase
Ao criar uma tabela externa, especifique o HBaseStorageHandler na instrução DDL e configure as informações sobre o cluster do ApsaraDB for HBase Standard Edition ou ApsaraDB for HBase Performance-enhanced Edition. As consultas aos nomes de tabelas e colunas não diferenciam maiúsculas de minúsculas.
-- Enable Hive compatibility mode.
set odps.sql.hive.compatible = true;
-- If you use an ApsaraDB for HBase Performance-enhanced Edition cluster, you must also set the odps.sql.hbase.version parameter to lindorm.
set odps.sql.hbase.version=lindorm;
-- Create an ApsaraDB for HBase external table.
create external table if not exists <mc_hbase_external>
(
<col1_name> <data_type>,
<col2_name> <data_type>,
......
)
-- The handler used to process data from the ApsaraDB for HBase data source.
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties (
'hbase.columns.mapping'='<:key,col-family:col-name1,col-family:col-name2,...>')
tblproperties (
-- The hbase.table.name and hbase.zookeeper.quorum parameters are required.
'hbase.table.name'='<hbase_table_name>',
'hbase.zookeeper.quorum'='<VPC ip1|host1:port,VPC ip2|host2:port...>',
-- The hbase.client.username and hbase.client.password parameters are required only for ApsaraDB for HBase Performance-enhanced Edition clusters.
'hbase.client.username'='****',
'hbase.client.password'='****',
-- The hbase.zookeeper.property.clientPort, mcfed.zookeeper.session.timeout, and hbase.client.retries.number parameters are optional.
-- For ApsaraDB for HBase Standard Edition clusters, the default value of hbase.zookeeper.property.clientPort is 2181.
-- For ApsaraDB for HBase Performance-enhanced Edition clusters, the default value is 30020.
['hbase.zookeeper.property.clientPort'='{2181|30020}',]
['mcfed.zookeeper.session.timeout'='<value>',]
['hbase.client.retries.number'='<value>',]
'networklink'='<networklink_name>'
);
mc_hbase_external: Obrigatório. Nome da tabela externa do ApsaraDB for HBase a ser criada.
col_name: Obrigatório. Nome de uma coluna na tabela externa do ApsaraDB for HBase.
data_type: Obrigatório. Tipo de dados da coluna.
-
with serdeproperties:
-
'hbase.columns.mapping'='<:key,col-family:col-name1,col-family:col-name2,...>': Obrigatório. Mapeamentos entre as colunas da tabela externa do ApsaraDB for HBase e as colunas da tabela no cluster do ApsaraDB for HBase.
A RowKey, especificada como
:key, deve ser a primeira entrada.O formato da coluna é
col-family:col-name1,col-family:col-name2. Apenas uma família de colunas pode ser especificada em um job.
-
-
hbase://VPC ip|host:port: Obrigatório. Mestre do ZooKeeper configurado no ApsaraDB for HBase. Trata-se do endpoint de conexão do ZooKeeper para o ApsaraDB for HBase Standard Edition ou do endpoint de acesso da API Java para o ApsaraDB for HBase Performance-enhanced Edition. Também é possível especificar o endereço IP da VPC, o intervalo de endereços IP ou a porta da tabela associada do ApsaraDB for HBase. Exemplos:
192.0.2.1-192.0.2.10:9000, 192.0.2.20:70050ou192.0.2.20/16:2181. Para obter essas informações, faça login no console do ApsaraDB for HBase . Na página Clusters, clique no nome do cluster de destino. No painel de navegação à esquerda, clique em Database Connection para visualizar as Connection Information.Para fontes de dados distribuídas, confirme o endereço IP e a porta de front-end, bem como os endereços IP e portas dos DataNodes que você deseja acessar. Para uma tabela externa do ApsaraDB for HBase, especifique os endereços IP e portas do ZooKeeper, HMaster e RegionServer (2181 ou 30020, 16000 e 16020). A porta padrão do ZooKeeper é 2181 para o ApsaraDB for HBase Standard Edition e 30020 para o ApsaraDB for HBase Performance-enhanced Edition.
Este campo suporta intervalos de endereços IP. O mapeamento de endereços IP consome recursos. Por padrão, é possível mapear no máximo 2.000 endereços IP por vez.
-
tblproperties:
'hbase.table.name'='<hbase_table_name>': Obrigatório. Nome da tabela no cluster do ApsaraDB for HBase à qual o MaxCompute será mapeado. Esta tabela já deve existir e ter sido criada usando um cliente HBase.
'hbase.zookeeper.quorum'='<VPC ip1|host1:port,VPC ip2|host2:port...>': Obrigatório. Endereço IP ou nome de domínio do ZooKeeper para o ApsaraDB for HBase. Trata-se do endpoint de conexão do ZooKeeper para o ApsaraDB for HBase Standard Edition ou do endpoint de acesso da API Java para o ApsaraDB for HBase Performance-enhanced Edition.
hbase.client.username: Obrigatório. Este parâmetro é necessário apenas para clusters do ApsaraDB for HBase Performance-enhanced Edition. Para encontrar o nome de usuário, faça login no console do ApsaraDB for HBase . Na página Clusters, clique no nome do cluster de destino. No painel de navegação à esquerda, clique em Database Connection. Em seguida, localize o Default Username na seção Connection Information.
hbase.client.password: Obrigatório. Este parâmetro é necessário apenas para clusters do ApsaraDB for HBase Performance-enhanced Edition. Para encontrar a senha, faça login no console do ApsaraDB for HBase . Na página Clusters, clique no nome do cluster de destino. No painel de navegação à esquerda, clique em Database Connection. Em seguida, localize a Default Password na seção Connection Information.
'hbase.zookeeper.property.clientPort'='{2181|30020}': Opcional. Porta do ZooKeeper para o ApsaraDB for HBase. A porta padrão do ZooKeeper é 2181 para o ApsaraDB for HBase Standard Edition e 30020 para o ApsaraDB for HBase Performance-enhanced Edition.
'mcfed.zookeeper.session.timeout'='<value>': Opcional. Tempo limite da sessão do ZooKeeper. Unidade: milissegundos. Recomenda-se o valor 30000.
'hbase.client.retries.number'='<value>': Opcional. Número de tentativas de reconexão para o cliente HBase.
'networklink'='<networklink_name>': Obrigatório. Nome da conexão de rede do MaxCompute vinculada à VPC onde reside a instância do ApsaraDB for HBase.
NotaConfigurações que começam com mcfed.zookeeper e hbase são configurações relacionadas ao ZooKeeper.
Exemplos
-
Faça login no console do MaxCompute e execute a instrução
CREATE EXTERNAL TABLEpara criar uma tabela externa do ApsaraDB for HBase.Exemplos:
-
ApsaraDB for HBase Standard Edition
SET odps.sql.hive.compatible = true; CREATE EXTERNAL TABLE IF NOT EXISTS mf_hbase_test_t_ext ( key int, col1 string, col2 string ) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ( 'hbase.columns.mapping'=':key,f:col1,f:col2') tblproperties ( 'hbase.table.name'='mf_hbase_test_t', 'hbase.zookeeper.quorum'='hb-2zef****-master1-001.hbase.rds.aliyuncs.com,hb-2zef****-master2-001.hbase.rds.aliyuncs.com,hb-2zef****-master3-001.hbase.rds.aliyuncs.com', 'hbase.zookeeper.property.clientPort'='2181', 'networklink'='networklink4hbase'); -
ApsaraDB for HBase Performance-enhanced Edition
SET odps.sql.external.net.vpc=true; SET odps.sql.hive.compatible = true; SET odps.sql.hbase.version=lindorm; CREATE EXTERNAL TABLE mf_hbase_test_t_ext ( key int, col1 string, col2 string ) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH serdeproperties ( 'hbase.columns.mapping'=':key,f:col1,f:col2') tblproperties ( 'hbase.table.name'='mf_hbase_test_t', 'hbase.zookeeper.quorum'='hb-2zef****-master1-001.hbase.rds.aliyuncs.com,hb-2zef****-master2-001.hbase.rds.aliyuncs.com,hb-2zef****-master3-001.hbase.rds.aliyuncs.com', 'hbase.zookeeper.property.clientPort'='30020', 'networklink'='networklink4hbase');
-
-
Execute o comando
SELECTpara consultar a tabela e verifique se a associação foi bem-sucedida.Exemplo:
SELECT * FROM mf_hbase_test_t_ext;O seguinte resultado é retornado:
+------+------------+------------+ | key | col1 | col2 | +------+------------+------------+ | 1 | hello | NULL | +------+------------+------------+ -
Execute a instrução
INSERT OVERWRITEpara gravar dados na tabela do ApsaraDB for HBase.Exemplo:
INSERT OVERWRITE TABLE mf_hbase_test_t_ext SELECT '2', 'hbase', 'mftestinsert'; -
Execute a instrução
SELECTpara verificar os dados gravados.Exemplo:
SELECT * FROM mf_hbase_test_t_ext;O seguinte resultado é retornado:
+------+------------+--------------------+ | key | col1 | col2 | +------+------------+--------------------+ | 1 | hello | NULL | | 2 | hbase | mftestinsert | +------+------------+--------------------+