Todos os produtos
Search
Central de documentação

Tablestore:Visão geral do Spark/SparkSQL

Última atualização: Sep 09, 2026

Ao usar o mecanismo de computação Spark para acessar o Tablestore, utilize E-MapReduce SQL ou programação DataFrame para executar cálculos complexos e analisar dados com eficiência.

Recursos

Para computação em lote, o Tablestore no Spark oferece os seguintes recursos principais de otimização:

  • Seleção de índice: escolha o índice correto é fundamental para consultas eficientes. Selecione o índice mais adequado com base nas condições de filtro para melhorar a eficiência da consulta. O Tablestore fornece índices secundários globais e índices de pesquisa.

    Nota

    Para obter mais informações sobre índices secundários globais e índices de pesquisa, consulte A deep dive into massive structured data storage technology: Tablestore storage and indexing engines.

  • Poda de partição de tabela: este recurso correlaciona partições lógicas (Splits) às condições de filtro e descarta Splits inválidos, o que reduz o volume de dados transferidos do servidor.

  • Pushdown de projeção e filtro: essa funcionalidade envia colunas de projeção e condições de filtro diretamente ao servidor, diminuindo a quantidade de dados transferidos de cada partição.

  • Especificação dinâmica de tamanho de Split: ajuste o volume de dados e o número de partições em cada partição lógica (Split). Cada Split vincula-se a uma partição de Resilient Distributed Dataset (RDD), acelerando a execução de tarefas do Spark.

    Nota

    Use a API ComputeSplitsBySize para obter partições lógicas (Splits). Essa API divide logicamente uma tabela completa em Splits com tamanho aproximado especificado e retorna os pontos de divisão e dicas de localização. Os mecanismos de computação geralmente usam essas informações para planejamento de execução, como o planejamento de concorrência.

Para computação de fluxo, o Tablestore no Spark usa a tecnologia Data Change Capture (CDC) baseada no Tunnel Service para implementar consumo e computação de fluxo em mini-lotes no Spark, oferecendo semântica de consistência at-least-once. Na computação de fluxo, cada partição vincula-se a uma partição RDD. Ao expandir as partições da tabela, você obtém dimensionamento linear do throughput de dados.

Métodos de uso

Escolha entre E-MapReduce SQL e programação DataFrame para acessar o Tablestore com Spark, conforme a necessidade do cenário.

  • Método E-MapReduce SQL

    Este método usa instruções SQL padrão para operar e acessar dados de negócios. É simples de usar e permite migrar facilmente a lógica de negócios existente.

  • Método DataFrame

    Embora exija conhecimento de programação, este método permite combinar componentes para implementar lógicas de negócios complexas, sendo ideal para cenários que demandam maior flexibilidade e sofisticação.

Métodos de acesso a dados

O Tablestore disponibiliza dois métodos de acesso a dados para computação em lote no Spark: consulta KV em tabelas de dados ou índices secundários globais e consulta por índice de pesquisa. Esses métodos suportam leitura e gravação rápidas de grandes volumes de dados estruturados, além de oferecerem recursos avançados de consulta e análise.

As diferenças entre os dois métodos de acesso a dados são:

  • A consulta KV é eficiente quando as condições de filtro envolvem colunas de chave primária. No entanto, não é recomendada para cenários em que as condições de filtro mudam frequentemente ou abrangem muitas colunas fora da chave primária. Além disso, a consulta KV não suporta consultas geográficas.

  • A consulta por índice de pesquisa é indicada para os seguintes cenários de acesso a dados:

    Nota

    Os índices de pesquisa baseiam-se em índices invertidos e armazenamento colunar, resolvendo problemas complexos de consulta de big data. Eles oferecem recursos de consulta e análise semelhantes aos do Elasticsearch, como full-text search, fuzzy search, geo queries, and statistical aggregation.

    • Análise de dados em tempo real com pequenos volumes de dados e requisitos de alta latência.

    • Condições de filtro que envolvem diversas colunas fora da chave primária, ausentes nas chaves primárias do índice secundário global ou da tabela de dados.

    • Condições de filtro com alta seletividade, em que uma condição em uma única coluna elimina a maior parte dos dados.

      Por exemplo, em select * from table where col = 1000;, col é uma coluna fora da chave primária, e a condição col = 1000 filtra a maioria dos dados.

    • Condições de consulta que incluem uma consulta geográfica.

A figura a seguir usa a instrução SQL select * from table where col1 like 'A%' or col2 = 'a'; para demonstrar os dois métodos de consulta.

  • No acesso via índice de pesquisa, o índice em col1 localiza uma linha onde col1 é 'Ali%': pk1 = 1. O índice em col2 encontra duas linhas onde col2 é 'a': pk1 = 1 e pk1 = 2. Em seguida, uma operação de união é aplicada aos resultados intermediários para gerar o resultado final que atende às condições: pk1 = 1, col1 = 'Alibaba Cloud', col2 = 'a'.

  • No acesso pelo método de consulta KV, a consulta ocorre diretamente na tabela de dados do Tablestore. Como essa tabela só permite consultas por chave primária, se as colunas de filtro na instrução SQL não forem chaves primárias, será necessária uma varredura completa na tabela.

    Como col1 não é chave primária da tabela de dados, o Tablestore realiza uma varredura completa para encontrar a linha onde col1 é 'Ali%'. Da mesma forma, como col2 também não é chave primária, o Tablestore executa outra varredura completa para localizar as duas linhas onde col2 é 'a'. Posteriormente, os resultados intermediários passam por uma operação de união.

    Nesse caso, seria possível crie uma tabela de índice com col1 e col2 como chaves primárias para atender à consulta, mas essa abordagem oferece menos flexibilidade.