Todos os produtos
Search
Central de documentação

Tablestore:Configuração do Presto Server e exemplos de SQL

Última atualização: Jul 03, 2026

Para conectar o PrestoDB ao Tablestore, configure o Catalog e o Schema do Presto Server. Após a conexão, use os exemplos de SQL deste tópico para operar dados.

Configuração do servidor

Configure o Catalog e o Schema do Presto Server.

  • A configuração do Catalog define as configurações do conector e o modo de configuração do Schema. Configure o Schema usando configuração dinâmica com uma meta table ou configuração estática com um arquivo local.

  • Na configuração dinâmica (modo meta table), não é necessário configurar o Schema antes de iniciar o Presto Server. Crie o Schema e as tabelas de mapeamento após iniciar a interface de linha de comando (CLI) SQL.

Configuração do Catalog

O arquivo de configuração do Catalog está localizado em etc/catalog/tablestore.properties na pasta de instalação do PrestoDB.

connector.name=tablestore
tablestore.schema-mode=meta-table
#tablestore.schema-mode=file
tablestore.schema-file=/users/test/tablestore/presto/tablestore.schema
tablestore.meta-instance=metastoreinstance
tablestore.endpoint=http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/
tablestore.accessid=****************
tablestore.accesskey=**************************
tablestore.meta-table=meta_table
tablestore.auto-create-meta-table=true

Item de configuração

Exemplo

Obrigatório

Descrição

connector.name

tablestore

Sim

Nome do conector. Defina como tablestore.

tablestore.schema-mode

meta-table

Sim

Modo de configuração do Schema. Valores válidos:

  • meta-table: Configuração dinâmica usando uma meta table. Requer informações da instância do Tablestore para armazenamento de metadados.

  • file: Configuração estática usando um arquivo local. Requer o caminho completo do arquivo estático local.

tablestore.schema-file

/users/test/tablestore/presto/tablestore.schema

Sim, condicional

Necessário apenas quando tablestore.schema-mode estiver definido como file.

Caminho completo do arquivo estático local. Para mais informações, consulte Configuração do Schema.

tablestore.meta-instance

metastoreinstance

Sim, condicional

Necessário apenas quando tablestore.schema-mode estiver definido como meta-table.

Instância do Tablestore usada para armazenar metadados. Para mais informações, consulte Instâncias.

Importante

Certifique-se de que a instância configurada exista em sua conta Alibaba Cloud.

tablestore.endpoint

http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/

Sim, condicional

Necessário apenas quando tablestore.schema-mode estiver definido como meta-table.

Endpoint da instância do Tablestore usada para armazenar metadados. Para mais informações, consulte Endpoints.

tablestore.accessid

Sim, condicional

Necessário apenas quando tablestore.schema-mode estiver definido como meta-table.

AccessKey ID e AccessKey secret da conta Alibaba Cloud ou do usuário do Resource Access Management (RAM) com permissões de acesso à instância de metadados.

tablestore.accesskey

Sim, condicional

tablestore.meta-table

meta_table

Sim, condicional

Necessário apenas quando tablestore.schema-mode estiver definido como meta-table.

Nome da tabela do Tablestore usada para armazenar metadados.

tablestore.auto-create-meta-table

true

Não

Aplicável apenas quando tablestore.schema-mode estiver definido como meta-table.

Define se a tabela de metadados será criada automaticamente. O padrão é true, que cria a tabela de metadados automaticamente ao criar um Schema.

Configuração do Schema

Configure o Schema em um dos dois modos: configuração dinâmica com uma meta table (recomendado) ou configuração estática com um arquivo local.

Configuração dinâmica com meta table

  • Não é necessário configurar o Schema antes de iniciar o Presto Server.

  • Após conectar e iniciar a CLI SQL, use os comandos create schema e create table para criar o Schema e as tabelas de mapeamento. Para mais informações, consulte Criar um Schema e Criar uma tabela de mapeamento.

Configuração com arquivo estático local

O caminho do arquivo estático local deve corresponder ao caminho completo especificado para tablestore.schema-file na configuração do Catalog.

Crie um arquivo no servidor com o seguinte conteúdo:

{
	"account" : {
		"accessId" : "xxxxxxxx", ----- <Required> The AccessKey ID of the Alibaba Cloud account or RAM user.
		"accessKey" : "xxxxxxxxxxxxxxx", ----- <Required> The AccessKey secret of the Alibaba Cloud account or RAM user.
	},
	"instances" : {
		"mydb" : { ----- <Required> The Schema name in PrestoDB.
			"instanceName" : "myinstance", ----- <Required> The name of the Tablestore instance.
			"endpoint" : "http://myinstance.cn-hangzhou.ots.aliyuncs.com", ----- <Required> The endpoint of the Tablestore instance.
			"tables": {
				"mytable" : { ----- <Required> The table name in PrestoDB.
					"originName" : "SampleTable", ----- <Optional> The name of the corresponding table in Tablestore (case-sensitive). If not configured, it is the same as the table name in Presto.
					"columns" : [  ----- <Required> The metadata of the table. It must include all primary key columns, and the order of the primary key columns must be the same as the primary key order of the table.
						{"name" : "gid", "type" : "bigint"},
						{"name" : "uid", "type" : "bigint"},
						{"name" : "c1", "type" : "boolean", "originName" : "col1"},
						{"name" : "c2", "type" : "bigint", "originName" : "col2"},
						{"name" : "C3", "type" : "varchar", "originName" : "col3"}
					]
				},
				"anotherTable" : {
					"originName" : "sampleTable2",
					"columns" : [
						{"name" : "gid", "type" : "bigint"},
						{"name" : "uid", "type" : "bigint"},
						{"name" : "a", "type" : "varchar"},
						{"name" : "b", "type" : "varchar"},
						{"name" : "c", "type" : "boolean"},
						{"name" : "d", "type" : "bigint"},
						{"name" : "e", "type" : "varchar"}
					]
				}
			}
		}
	}
}

Item de configuração

Obrigatório

Descrição

account

accessId

Sim

AccessKey ID e AccessKey secret da conta Alibaba Cloud ou do usuário RAM.

accessKey

Sim

instances(map(<schema_name> -> <schema_info>))

Sim

Mapa JSON que associa nomes de Schema às informações do Schema.

Importante

Os nomes de Schema não diferenciam maiúsculas de minúsculas no PrestoDB.

<schema_info>

instanceName

Sim

Nome da instância do Tablestore correspondente a este Schema. Para mais informações, consulte Instâncias.

endpoint

Sim

Endpoint da instância do Tablestore. Para mais informações, consulte Endpoints.

tables(map(<table_name> -> <table_info>))

Sim

Lista de tabelas montadas no PrestoDB.

Importante

<table_name> não diferencia maiúsculas de minúsculas no PrestoDB.

<table_info>

originName

Não

Nome real da tabela no Tablestore.

  • Se omitido, o conector mapeia automaticamente o nome da tabela do PrestoDB para o nome correspondente no Tablestore.

  • Se especificado, o conector usa este valor como o nome real da tabela.

Se o conector não encontrar a tabela correspondente no Tablestore, as operações de leitura e gravação na tabela falharão.

columns(list([<column_info>]))

Sim

Metadados da tabela, incluindo todas as colunas definidas.

Importante
  • Inclua todas as colunas de chave primária da tabela de dados do Tablestore. Os nomes e a ordem das colunas de chave primária devem corresponder às definições reais na tabela do Tablestore.

  • Metadados incorretos causam falha em todas as operações subsequentes de leitura e gravação na tabela.

<column_info>

name

Sim

Nome da coluna.

Importante

Os nomes das colunas não diferenciam maiúsculas de minúsculas no PrestoDB.

type

Sim

Tipo da coluna. Tipos do PrestoDB compatíveis que mapeiam para tipos de coluna do Tablestore: Bigint, Varchar, Varbinary, Double e Boolean.

Importante

O tipo da coluna no PrestoDB deve corresponder ao tipo da coluna no Tablestore.

originName

Não

Nome da coluna correspondente na tabela de dados do Tablestore.

Exemplos comuns de SQL

Os exemplos de SQL a seguir demonstram como trabalhar com dados do Tablestore por meio do PrestoDB. Todos os exemplos usam um Schema chamado testdb conectado à instância do Tablestore myinstance e uma tabela de mapeamento chamada exampletable com o esquema (pk varchar, c1 double, c2 varchar, c3 varchar).

Criar um Schema

Um Schema configura o acesso a uma instância do Tablestore e gerencia a autenticação. O exemplo abaixo cria um Schema chamado testdb para acessar a instância do Tablestore myinstance.

CREATE SCHEMA tablestore.testdb
WITH (
  endpoint = 'https://myinstance.cn-hangzhou.ots.aliyuncs.com',
  instance_name = 'myinstance',
  access_id = '************************',
  access_key = '********************************'
);

Parâmetro

Exemplo

Obrigatório

Descrição

endpoint

https://myinstance.cn-hangzhou.ots.aliyuncs.com

Sim

Endpoint da instância do Tablestore. Para mais informações, consulte Endpoints.

instance_name

myinstance

Sim

Nome da instância do Tablestore. Para mais informações, consulte Instâncias.

access_id

Sim

AccessKey ID da conta Alibaba Cloud ou do usuário RAM.

access_key

Sim

AccessKey secret da conta Alibaba Cloud ou do usuário RAM.

Criar uma tabela de mapeamento

Uma tabela de mapeamento corresponde a uma tabela física em uma instância do Tablestore.

Importante

Observe os seguintes pontos ao criar uma tabela de mapeamento:

  • Garanta que os tipos de campo na tabela de mapeamento correspondam aos da tabela de dados do Tablestore. Para mais informações, consulte Mapeamento de tipos de campo.

  • O nome da tabela de mapeamento deve corresponder ao nome da tabela no Tablestore.

  • A propriedade table_name na instrução CREATE TABLE mapeia a tabela do PrestoDB para a tabela real no Tablestore. Várias tabelas de mapeamento com nomes diferentes podem apontar para a mesma tabela de dados do Tablestore.

  • A tabela de mapeamento deve incluir todas as colunas de chave primária da tabela de dados, mas pode incluir apenas um subconjunto das colunas de atributo.

  • Os nomes e a ordem das colunas de chave primária na tabela de mapeamento devem corresponder aos da tabela de dados do Tablestore. Mapeie cada coluna de atributo à sua contraparte no Tablestore usando o parâmetro origin_name.

O exemplo a seguir cria uma tabela de mapeamento chamada exampletable que mapeia para a tabela de dados do Tablestore de mesmo nome.

CREATE TABLE if not exists exampletable
(
   pk varchar,
   c1 double with (origin_name = 'col1'),
   c2 varchar with (origin_name = 'col2'),
   c3 varchar with (origin_name = 'col3')
) WITH (
   table_name = 'exampletable'
);

Operações de Schema

Após criar um Schema, liste todos os Schemas ou selecione um Schema para uso.

Listar todos os Schemas

show schemas;

Resposta de exemplo:

       Schema       
--------------------
 information_schema 
 testdb             
 testdb1            
(3 rows)

Usar um Schema

Selecione um Schema antes de executar operações em suas tabelas.

Importante

Selecione um Schema antes de realizar operações nas tabelas contidas nele.

O exemplo a seguir seleciona o Schema testdb.

use testdb;

Resposta de exemplo:

USE

Operações de tabela de mapeamento

Após criar uma tabela de mapeamento, liste as tabelas em um Schema, visualize os metadados da tabela ou exclua uma tabela de mapeamento.

Listar tabelas em um Schema

Após selecionar um Schema, liste suas tabelas.

show tables;

Resposta de exemplo:

      Table      
-----------------
 exampletable    
 sampletable     
 sampletabletest 
 table1          
 testtable       
(5 rows)

Descrever uma tabela

O exemplo a seguir descreve a tabela exampletable.

describe exampletable;

Resposta de exemplo:

Column |  Type   | Extra | Comment 
--------+---------+-------+---------
 pk     | varchar |       |         
 c1     | double  |       |         
 c2     | varchar |       |         
 c3     | varchar |       |         
(4 rows)

Excluir uma tabela de mapeamento

O exemplo a seguir exclui a tabela de mapeamento table1.

drop table table1;

Resposta de exemplo:

DROP TABLE

Operações de dados

Após criar uma tabela de mapeamento, grave e leia dados da tabela correspondente no Tablestore.

Importante

O PrestoDB não suporta operações UPDATE ou DELETE em tabelas do Tablestore.

Gravar dados

  • Inserir uma única linha

    O exemplo a seguir insere uma linha em exampletable.

    insert into exampletable values('101', 22.0, 'Mary', '10002');

    Resposta de exemplo:

    INSERT: 1 row
  • Importar dados em lote

    Importante

    Antes de importar dados em lote, certifique-se de que a tabela de destino existe e seu esquema corresponde ao da tabela de origem.

    O exemplo a seguir copia linhas onde c1 < 50 de exampletable para sampletable.

    insert into sampletable select pk, c1, c2, c3 from exampletable where c1 < 50; 

    Resposta de exemplo:

    INSERT: 3 rows

Ler dados

  • Consultar todas as linhas

    O exemplo a seguir lê todos os dados de exampletable.

    select * from exampletable;

    Resposta de exemplo:

     pk  |  c1  |  c2  |  c3   
    -----+------+------+-------
     100 | 11.0 | Lily | 10001 
     101 | 22.0 | Mary | 10002  
     102 | 12.0 | Jim  | 10003   
    (3 rows)
  • Consultar linhas com condições

    O exemplo a seguir consulta linhas em exampletable onde c1 < 15 e c3 = '10001'.

    select * from exampletable where c1 < 15 and c3 = '10001'; 

    Resposta de exemplo:

     pk  |  c1  |  c2  |  c3   
    -----+------+------+-------
     100 | 11.0 | Lily | 10001 
    (1 row)

Analisar dados

  • Calcular a média da coluna

    O exemplo a seguir calcula a média da coluna c1 em exampletable.

    select avg(c1) as Average from exampletable;

    Resposta de exemplo:

    Average 
    ---------
        15.0 
    (1 row)
  • Contar o total de linhas

    O exemplo a seguir conta todas as linhas em exampletable.

    select count(*) as total from exampletable;

    Resposta de exemplo:

    total 
    -------
         3 
    (1 row)