O PrestoDB é um mecanismo de consulta SQL distribuído e open source para big data, baseado na arquitetura de processamento massivamente paralelo (MPP). Ele se conecta a diversas fontes de dados, como MySQL, Elasticsearch e Tablestore. Após conectar o PrestoDB ao Tablestore, execute instruções SQL no PrestoDB para consultar e analisar dados, além de gravar e importar informações nesse serviço.
Informações gerais
O PrestoDB é um mecanismo de consulta SQL distribuído e open source para big data, baseado na arquitetura de processamento massivamente paralelo (MPP). Ele se conecta a diversas fontes de dados, como MySQL, Elasticsearch e Tablestore. O PrestoDB funciona como ferramenta de consulta, extração, transformação e carga (ETL), teste de estresse ou mecanismo de consulta unificado, atendendo aos requisitos de processamento de dados em diferentes cenários.
Como ferramenta de consulta para desenvolvimento diário e solução de problemas, o PrestoDB permite executar instruções SQL para consultar e analisar dados em tabelas.
Na função de ferramenta ETL, o PrestoDB replica dados entre tabelas ou instâncias e copia dados de fontes distintas.
Para testes de estresse, o PrestoDB verifica ou grava vários registros de dados simultaneamente.
Como mecanismo de consulta unificado na camada intermediária de dados, o PrestoDB integra-se a várias fontes de dados heterogêneas.
Antes de acessar o Tablestore com o PrestoDB, conecte-o ao serviço. Após estabelecer essa conexão, execute instruções SQL no PrestoDB para consultar e analisar dados, gravar informações e importar dados para o Tablestore.
Pré-requisitos
-
Um servidor com sistema operacional Linux ou macOS deve estar disponível. Neste exemplo, utiliza-se um servidor Linux.
NotaCaso não tenha um servidor Linux disponível, recomendamos usar uma instância do Elastic Compute Service (ECS) com esse sistema operacional. Para mais informações, consulte Criar e gerenciar uma instância ECS pelo console do ECS (versão express).
Java 8 de 64 bits e Python 3 devem estar instalados no servidor.
O PrestoDB deve estar instalado no servidor.
-
Baixe o arquivo prestodb-tablestore-connector correspondente à versão do PrestoDB e faça upload dele para o diretório
plugindentro do diretório de instalação do PrestoDB. Extraia o arquivo no diretório de instalação.A tabela a seguir descreve o mapeamento entre a versão do plug-in prestodb-tablestore-connector e a versão do PrestoDB.
Versão do plug-in
Versão do PrestoDB
Descrição
0.280
Esta é a primeira versão do plug-in. O PrestoDB 0.280 ou superior oferece suporte a este plug-in.
Obtenha as informações do Tablestore necessárias para conectar o PrestoDB ao serviço, incluindo a conta de acesso, os detalhes da instância e as informações da tabela.
-
Obtenha um par de AccessKey para um usuário RAM com permissões para gerenciar o Tablestore. Para mais informações, consulte Obter um par de AccessKey.
NotaSe o usuário RAM não tiver permissões para gerenciar o Tablestore, conceda-as antes de prosseguir. Para mais informações, consulte Usar uma política RAM para conceder permissões a um usuário RAM.
O PrestoDB acessa apenas dados do Tablestore no modelo Wide Column.
-
Por padrão, o PrestoDB grava dados no Tablestore chamando a operação UpdateRow. Não é possível gravar dados usando a operação PutRow por meio do PrestoDB. Para gravar dados em uma tabela do Tablestore com o PrestoDB, verifique se o parâmetro Allow Updates está definido como Yes na tabela. Caso contrário, a gravação falhará.
ImportanteSe você definir o parâmetro Time to Live com um valor diferente de -1 para uma tabela do Tablestore e desejar criar um índice de pesquisa para ela, defina o parâmetro Allow updates como No. Nesse cenário, o PrestoDB não poderá gravar dados na tabela.
Para usar o PrestoDB na gravação de dados no Tablestore via operação PutRow, entre no grupo DingTalk 36165029092 e contate o suporte técnico da Alibaba Cloud.
Para verificar se uma tabela aceita atualizações, visualize o valor do parâmetro Allow Updates na aba Basic Information da tabela no console do Tablestore ou chame a operação DescribeTable usando os SDKs do Tablestore.

-
Obtenha o programa executável para instalar o cliente PrestoDB.
-
Baixe o pacote de instalação do cliente PrestoDB.
Neste exemplo, baixe o pacote presto-cli-0.280-executable.jar.
Salve o pacote de instalação do cliente PrestoDB no diretório
bindentro do diretório de instalação do PrestoDB.-
Execute os comandos a seguir no diretório
binpara obter o programa executável do cliente PrestoDB.# Rename the installation package of the PrestoDB client to presto. Replace presto-cli-0.280-executable.jar with the actual version name of the PrestoDB client. mv presto-cli-0.280-executable.jar presto # Grant the user the permissions to perform operations on the presto file. chmod +x prestoA figura a seguir mostra o diretório onde o programa executável do cliente PrestoDB está localizado.

-
-
Execute os comandos a seguir no diretório
binpara iniciar o servidor Presto.ImportanteAo iniciar o servidor Presto, inicie separadamente o coordinator e pelo menos um worker.
# You can run the Presto server in foreground or background. If you run the Presto server in foreground, you can view operation logs in an easier way. # Method 1: Run the Presto server in background ./launcher start # Method 2: Run the Presto server in foreground ./launcher run -
Execute o comando a seguir no diretório
binpara iniciar o SQL CLI.NotaPor padrão, o PrestoDB executa na porta 8080. Para modificar a configuração da porta, altere o valor do parâmetro
http-server.http.portno arquivoetc/config.properties.Após modificar certas configurações, reinicie o servidor Presto para que as novas configurações entrem em vigor.
O trecho
./prestono comando indica o caminho relativo do programa executável do cliente PrestoDB dentro do diretóriobin.
./presto --server localhost:8080 --catalog tablestore --schema defaultA tabela a seguir descreve os parâmetros do comando.
Parâmetro
Exemplo
Obrigatório
Descrição
--server
localhost:8080
Sim
URI do servidor Presto. Substitua o valor pela URI real do seu servidor Presto. O valor deste parâmetro deve ser igual ao valor do parâmetro
discovery.urino arquivoetc/config.propertiesdentro do diretório de instalação do PrestoDB.--catalog
tablestore
Sim
Nome do arquivo de configuração do catalog. Neste exemplo, o parâmetro está definido como tablestore.
--schema
default
Sim
Configuração do schema. Mantenha a configuração padrão.
-
Execute a instrução a seguir para criar um schema:
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.
-
Execute a instrução
use <SCHEMA_NAME>;para usar o schema criado.Substitua
<SCHEMA_NAME>pelo nome do schema criado. Execute a instruçãoshow schemas;para visualizar a lista de schemas. -
Execute a instrução a seguir para criar uma tabela de mapeamento para a tabela do Tablestore.
ImportanteObserve os pontos a seguir 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_namena 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.
Neste exemplo, utiliza-se a tabela main_table do Tablestore, que contém duas colunas de chave primária chamadas gid e uid, e três colunas de atributo chamadas col1, col2 e col3.
A instrução SQL de exemplo a seguir demonstra como criar uma tabela de mapeamento com o mesmo nome da tabela main_table do Tablestore:
CREATE TABLE if not exists main_table ( gid bigint, uid bigint, c1 boolean with (origin_name = 'col1'), c2 bigint with (origin_name = 'col2'), c3 varchar with (origin_name = 'col3') ) WITH ( table_name = 'main_table' ); -
Consulte as configurações do schema.
-
Consulte a lista de schemas
show schemas; -
Consulte a lista de tabelas em um schema específico
show tables;
-
-
Consulte os metadados de uma tabela específica
Substitua
<TABLE_NAME>pelo nome real da tabela.describe <TABLE_NAME>; -
Opere os dados.
Leia e grave dados no Tablestore.
-
Grave dados
-
Insira uma linha de dados
A instrução SQL de exemplo a seguir demonstra como inserir uma linha de dados na tabela main_table:
insert into main_table values(10001,10001,true,100,'hangzhou'); -
Importe vários registros de dados simultaneamente
ImportanteAntes de importar vários registros de dados simultaneamente, certifique-se de que uma tabela de destino foi criada e que o schema da tabela de destino é igual ao da tabela de origem.
A instrução SQL de exemplo a seguir demonstra como importar as colunas gid, uid, c1, c2 e c3 das linhas em que o valor da coluna gid é maior que 0 e o valor da coluna uid é menor que 10000 da tabela main_table para a tabela sampletable:
insert into sampletable select gid, uid, c1, c2, c3 from main_table where gid > 0 and uid < 100000;
-
-
Leia dados
A instrução SQL de exemplo a seguir demonstra como consultar as linhas na tabela sampletable em que o valor da coluna gid é maior que 0, o valor da coluna uid é menor que 10 e o valor da coluna c1 é true:
select * from sampletable where gid > 0 and uid < 10 and c1 = true;
-
Utilize outros mecanismos de computação, como MaxCompute, Spark, Function Compute e Realtime Compute for Apache Flink, para consultar e analisar dados em tabelas do Tablestore. Para mais informações, consulte Visão geral de computação e análise. Também é possível consultar e analisar dados em tabelas do Tablestore usando o recurso de consulta SQL ou o recurso de agregação suportado por índices de pesquisa. Para mais informações, consulte Visão geral de consulta SQL e Visão geral de índice de pesquisa.
Use o recurso Data Integration do DataWorks para migrar dados do Tablestore entre tabelas ou instâncias. Para mais informações, consulte Sincronizar dados entre tabelas.
Use o DataV ou o Grafana para visualizar dados, como exibir informações em gráficos. Para mais informações, consulte Visualização de dados.
Observações de uso
Mapeamentos de tipos de dados
O Tablestore e o PrestoDB suportam tipos de dados diferentes. A tabela a seguir descreve os mapeamentos entre os tipos de dados compatíveis com ambos.
|
Tipo de dados suportado pelo Tablestore |
Tipo de dados suportado pelo PrestoDB |
|
string |
varchar |
|
integer |
bigint |
|
double |
double |
|
boolean |
boolean |
|
binary |
varbinary |
Procedimento
Para acessar o Tablestore com o PrestoDB, siga estas etapas: conecte o PrestoDB ao Tablestore, inicie o SQL CLI do PrestoDB, crie um schema e uma tabela de mapeamento e, em seguida, execute instruções SQL para operar os dados.
Etapa 1: Conectar o PrestoDB ao Tablestore
Após instalar o PrestoDB, configure o catalog e o schema para estabelecer a conexão com o Tablestore. O arquivo de configuração do catalog fica no caminho etc/catalog/tablestore.properties.
Descrição da configuração
Procedimento
Etapa 2: Executar o SQL CLI do Presto
Após conectar o Tablestore ao PrestoDB, inicie o servidor Presto e execute instruções SQL.
Etapa 3: Criar um schema e uma tabela de mapeamento
Se você configurar um schema no modo dinâmico baseado em tabela de metadados, crie e use o schema manualmente para configurar a instância do Tablestore à qual o PrestoDB está conectado e autenticar as permissões do usuário. Em seguida, crie uma tabela de mapeamento para a tabela do Tablestore a fim de consultar e analisar dados.
Se você configurar um schema no modo baseado em arquivo estático local, pule esta etapa.
Etapa 4: Executar instruções SQL para operar dados
Antes de executar instruções SQL para operar dados, certifique-se de estar usando o schema necessário executando a instrução use <SCHEMA_NAME>;.
Execute instruções SQL para consultar configurações de schema e metadados da tabela de mapeamento, além de ler e gravar dados na tabela do Tablestore. Para mais informações sobre instruções SQL de exemplo, consulte a seção "Instruções SQL comuns de exemplo" no tópico Configurar um servidor Presto e executar instruções SQL de exemplo.
Faturamento
Ao usar o PrestoDB para acessar o Tablestore, a cobrança é feita pelo Tablestore com base no throughput de leitura e no throughput de escrita. Para mais informações, consulte Visão geral de faturamento.
