Índice para ignorar dados
Importante
DATASKIPPING INDEX
foi removido no Databricks Runtime 7.0. Em vez disso, recomendamos que você use tabelas Delta, que oferecem recursos aprimorados de pulo de dados.
Importante
Esta documentação foi desativada e pode não ser atualizada. Os produtos, serviços ou tecnologias mencionados neste conteúdo não são mais suportados. Consulte Pulo de dados para Delta Lake.
Description
Além da remoção de partições, o Databricks Runtime inclui outro recurso que se destina a evitar a verificação de dados irrelevantes, ou seja, o Índice de Pulo de Dados. Ele usa estatísticas no nível de arquivo para executar saltos adicionais na granularidade do arquivo. Isso funciona com, mas não depende de, particionamento no estilo Hive.
A eficácia do salto de dados depende das características dos seus dados e do seu layout físico. Como pular é feito na granularidade do arquivo, é importante que seus dados sejam particionados horizontalmente em vários arquivos. Isso normalmente acontecerá como consequência de ter vários trabalhos de acréscimo, particionamento (shuffle), bucketing e/ou o uso de spark.sql.files.maxRecordsPerFile
. Ele funciona melhor em tabelas com buckets classificados (), ou com colunas que estão correlacionadas com chaves de partição (por exemplo, , ), mas também quando seus dados apenas exibem alguma ordenação / clusteredness (df.write.bucketBy(...).sortBy(...).saveAsTable(...)
/ CREATE TABLE ... CLUSTERED BY ... SORTED BY ...
por exemplo, , ). brandName - modelName
companyID - stockPrice
orderID
bitcoinValue
Nota
Este recurso beta tem uma série de limitações importantes:
- É Opt-In: precisa ser ativado manualmente, por tabela.
- É apenas SQL: não há API DataFrame para ele.
- Depois que uma tabela é indexada, os efeitos das operações ou subsequentes
INSERT
não têm garantia de serem visíveis até que o índice seja explicitamenteADD PARTITION
ATUALIZADO.
Sintaxe SQL
Create Index
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Habilita o Pulo de Dados na tabela fornecida para as primeiras (ou seja, mais à esquerda) N colunas suportadas, onde N é controlado por spark.databricks.io.skipping.defaultNumIndexedCols
(padrão: 32)
partitionBy
as colunas estão sempre indexadas e não contam para este N.
Criar índice para colunas
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
FOR COLUMNS (col1, ...)
Habilita o Pulo de Dados na tabela fornecida para a lista especificada de colunas. Da mesma forma que acima, todas as partitionBy
colunas serão sempre indexadas além das especificadas.
Descrever índice
DESCRIBE DATASKIPPING INDEX [EXTENDED] ON [TABLE] [db_name.]table_name
Exibe quais colunas de uma determinada tabela são indexadas, juntamente com os tipos correspondentes de estatística no nível de arquivo que são coletados.
Se EXTENDED
for especificado, uma terceira coluna chamada "effectiveness_score" é exibida que dá uma medida aproximada de quão benéfico esperamos que DataSkipping seja para filtros nas colunas correspondentes.
Atualizar índice completo
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Reconstrói todo o índice. Ou seja, todas as partições da tabela serão reindexadas.
Atualizar partições
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
PARTITION (part_col_name1[=val1], part_col_name2[=val2], ...)
Reindexa apenas as partições especificadas. Essa operação geralmente deve ser mais rápida do que a atualização completa do índice.
Drop Index
DROP DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Desabilita o Pulo de Dados na tabela fornecida e exclui todos os dados de índice.