Todos os produtos
Search
Central de documentação

MaxCompute:Tabelas externas do Lindorm

Última atualização: Sep 08, 2026

Este tópico descreve como criar uma tabela externa do Lindorm no MaxCompute e mapear uma fonte de dados do Lindorm.

Introdução

O Lindorm é um banco de dados multimodelo nativo da cloud projetado para cenários como Internet das Coisas (IoT), services de internet e Internet dos Veículos. Ele oferece acesso unificado e processamento integrado para diversos tipos de dados, incluindo tabelas largas, séries temporais, texto, objetos, streams e dados espaciais. O Lindorm é compatível com várias interfaces padrão, como SQL, HBase/Cassandra/S3, TSDB, HDFS, Solr e Kafka, sendo um dos bancos de dados essenciais que suportam os principais services da alibaba.

Se houver conexão de rede entre o MaxCompute e o Lindorm, crie uma tabela externa mapeada para uma tabela do Lindorm. Isso permite:

  • Sincronizar dados de uma tabela do Lindorm para o MaxCompute para processamento ETL subsequente.

  • Executar consultas federadas juntando a tabela com outras tabelas do Lindorm.

  • Gravar dados do MaxCompute em uma tabela do Lindorm.

Limitações

  • Disponibilidade por região: Este recurso está disponível apenas nas seguintes regiões: China (Beijing), China (Shanghai), China (Zhangjiakou), China (Hangzhou), China (Shenzhen), China (Hong Kong), China (Shanghai) Finance Cloud Zone F, Japan (Tokyo), Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Germany (Frankfurt), US (Silicon Valley) e US (Virginia).

  • As tabelas externas do Lindorm não suportam a propriedade de cluster.

  • Somente o HBase-compatible mode of the wide table engine tem suporte.

Considerações

Ao ler dados de uma tabela de source do Lindorm, o sistema trata as discrepâncias na contagem de colunas da seguinte forma: se a tabela de source tiver menos colunas do que as definidas na DDL da tabela externa, as colunas ausentes receberão o valor NULL. Caso a tabela de source possua mais colunas, os dados excedentes serão ignorados.

Criar uma tabela externa do Lindorm

Sintaxe

Ao criar uma tabela externa do Lindorm, especifique HBaseStorageHandler na instrução CREATE EXTERNAL TABLE e configure a instância do Lindorm.

Os nomes de tabelas e colunas não diferenciam maiúsculas de minúsculas. Não há suporte para conversão forçada de caixa. A sintaxe é a seguinte:

-- Enable Hive-compatible mode.
SET odps.sql.hive.compatible = true;
-- Configure the odps.sql.hbase.version parameter to switch the HBase version to lindorm.
SET odps.sql.hbase.version=lindorm;
-- Create a Lindorm external table.
CREATE EXTERNAL TABLE if NOT EXISTS <mc_lindorm_external>
(
  <col_name1> <data_type>,
  <col_name2> <data_type>,
  ......
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' -- The handler for the Lindorm data source.
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.zookeeper.quorum'='',
    -- Configure the hbase.client.username and hbase.client.password parameters.
    'hbase.client.username'='****','hbase.client.password'='****',
    -- The hbase.zookeeper.property.clientPort, mcfed.zookeeper.session.timeout, and hbase.client.retries.number parameters are optional.
    -- The default value of hbase.zookeeper.property.clientPort is 30020.
    ['hbase.zookeeper.property.clientPort'='{30020}',]
    ['mcfed.zookeeper.session.timeout'='{{VALUE}}',]
    ['hbase.client.retries.number'='{{VALUE}}',]
    'networklink'='{{NETWORKLINK_NAME}}'
);

Parâmetros

  • mc_lindorm_external: Obrigatório. Nome da tabela externa do Lindorm a ser criada.

  • col_name: Obrigatório. Nome de uma coluna na tabela externa do Lindorm.

  • 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. Mapeamento de colunas entre a tabela externa do Lindorm e a tabela de source do Lindorm. Para mais informações, consulte HBaseIntegration-ColumnMapping.

      • Especifique primeiro a chave de linha (:key1[,:key2,:keyn]).

      • O formato da coluna é col-family:col-name1,col-family:col-name2. Um único job pode conter apenas uma família de colunas.

  • TBLPROPERTIES:

    • 'hbase.table.name'='<namespace:lindorm_table_name>': Obrigatório. Namespace e nome da tabela de source do Lindorm. Se nenhum namespace for especificado, o sistema usará o namespace default. Crie a tabela previamente no console do Lindorm.

    • 'hbase.zookeeper.quorum'='<VPC ip1|host1:port,VPC ip2|host2:port...>': Obrigatório. String de conexão do ZooKeeper para o mecanismo de tabela larga da instância do Lindorm. Encontre esse valor como URL de acesso da API Java no console do Lindorm.

    • hbase.client.username: Obrigatório. Para obter o nome de usuário, siga estas etapas:

      1. Faça login no console do Lindorm e selecione uma região no canto superior esquerdo.

      2. Na página Instances, clique em nome da instância desejada para abrir sua página de detalhes.

      3. No painel de navegação à esquerda, escolha Database Connections.

      4. Na aba Wide Table Engine, localize o Default Username.

    • hbase.client.password: Obrigatório. Para obter a senha, siga estas etapas:

      1. Faça login no console do Lindorm e selecione uma região no canto superior esquerdo.

      2. Na página Instances, clique em nome da instância desejada para abrir sua página de detalhes.

      3. No painel de navegação à esquerda, escolha Database Connections.

      4. Na aba Wide Table Engine, localize a Default Initial Password.

    • 'hbase.zookeeper.property.clientPort'='{2181|30020}': Opcional. Porta do ZooKeeper para o Lindorm. A porta padrão é 30020.

    • 'mcfed.zookeeper.session.timeout'='<value>': Opcional. Tempo limite da sessão do ZooKeeper, em milissegundos. O valor recomendado é 30000.

    • 'hbase.client.retries.number'='<value>': Opcional. Número máximo de tentativas de reconexão.

    • 'networklink'='<networklink_name>': Obrigatório. Nome do link de rede do MaxCompute usado para acessar a VPC onde reside a instância do Lindorm.

    Nota

    Parâmetros que começam com mcfed.zookeeper ou hbase referem-se a configurações relacionadas ao ZooKeeper.

Exemplo

  1. Você já created a MaxCompute project e installed and configured the MaxCompute client.

  2. Você ativou o service Lindorm e created a Lindorm instance.

  3. Você baixou e configurou o Lindorm Shell. Para mais informações, consulte Access the wide-table engine by using Lindorm Shell.

  4. Conexão de rede

    • Estabeleça uma conexão de rede entre o MaxCompute e o Lindorm por meio de uma VPC. Para mais informações sobre soluções de conexão VPC, consulte Network connection process.

    • Essa conexão permite apenas que o MaxCompute acesse a VPC especificada. Para acessar outras VPCs ou recursos em diferentes regiões, conecte as VPCs seguindo as instruções em VPC access (direct connection over a leased line).

  5. Use o Lindorm Shell para criar uma tabela do Lindorm e inserir dados.

    1. Crie a tabela lindorm_test.

      CREATE 'lindorm_test','f';
    2. Insira dados na tabela lindorm_test.

      put 'lindorm_test', '1122', 'f:col1', 'hello';
      put 'lindorm_test', '1122', 'f:col2', 'hbase';
    3. Consulte dados da tabela lindorm_test.

      scan 'lindorm_test';

      Resultado retornado:

      ROW                                 COLUMN+CELL
       1122                              column=f:col1, timestamp=1634201741745, value=hello
       1122                              column=f:col2, timestamp=1634201835934, value=hbase
      1 row(s)
      Took 0.0766 seconds
  6. Crie uma tabela externa do MaxCompute e mapeie-a para a fonte de dados do Lindorm.

    1. Execute o comando abaixo no cliente MaxCompute para criar uma tabela externa do Lindorm chamada lindorm_test_ext.

      SET odps.sql.hive.compatible = true;
      SET odps.sql.hbase.version=lindorm;
      CREATE EXTERNAL TABLE lindorm_test_ext
      (
        row_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'='lindorm_test',
        'hbase.zookeeper.quorum'='ld-2z****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020',
        'hbase.client.username'='<user_name>',
        'hbase.client.password'='***',
        'networklink'='<your network link name>');
    2. Consulte dados da tabela externa lindorm_test_ext.

      SET odps.sql.hive.compatible = true;
      SET odps.sql.hbase.version=lindorm;
      SELECT * FROM lindorm_test_ext;
      -- The following result is returned:
      +------------+------------+----------+
      | key        | col1       | col2     |
      +------------+------------+----------+
      | 1122       | hello      | hbase    |  
      +------------+------------+----------+
    3. Insira dados na tabela externa lindorm_test_ext.

      SET odps.sql.hive.compatible = true;
      SET odps.sql.hbase.version = lindorm;
      INSERT OVERWRITE TABLE lindorm_test_ext SELECT '1123', 'lindorm', 'mftestinsert';
    4. Consulte novamente os dados da tabela externa lindorm_test_ext.

      SET odps.sql.hive.compatible = true;
      SET odps.sql.hbase.version=lindorm;
      SELECT * FROM lindorm_test_ext;
      -- The following result is returned:
      +------------+------------+-------------+
      | key        | col1       | col2        |
      +------------+------------+-------------+
      | 1122       | hello      | hbase       | 
      | 1123       | lindorm    | mftestinsert|   
      +------------+------------+-------------+
    5. Utilize a instrução scan para consultar dados da tabela do Lindorm lindorm_test.

      scan 'lindorm_test';

      Resultado retornado:

      ROW                                 COLUMN+CELL
       1122                              column=f:col1, timestamp=1634201741745, value=hello
       1122                              column=f:col2, timestamp=1634201835934, value=hbase
       1123                              column=f:col1, timestamp=1634552508947, value=lindorm
       1123                              column=f:col2, timestamp=1634552508947, value=mftestinsert
      2 row(s)
      Took 0.0683 seconds