Índice de salto de dados
DATASKIPPING INDEX
foi removido no Databricks Runtime 7.0. Em vez disso, recomendamos que o senhor use as tabelas Delta, que oferecem recursos aprimorados de omissão de dados.
Essa documentação foi descontinuada e pode não estar atualizada. O produto, serviço ou tecnologia mencionados neste conteúdo não são mais suportados. Veja Data skipping para o Delta Lake.
Descrição
Além da poda de partição, o Databricks Runtime inclui outro recurso destinado a evitar a varredura de dados irrelevantes, ou seja, o Data Skipping Index. Ele usa estatísticas em nível de arquivo para realizar saltos adicionais na granularidade do arquivo. Isso funciona com, mas não depende, do particionamento no estilo Hive.
A eficácia da omissão de dados depende das características de seus dados e de sua disposição física. Como o salto é feito na granularidade do arquivo, é importante que seus dados sejam particionados horizontalmente em vários arquivos. Isso normalmente acontece como consequência de ter vários append Job, particionamento (shuffle), bucketing e/ou o uso de spark.sql.files.maxRecordsPerFile
. Funciona melhor em tabelas com compartimentos ordenados (df.write.bucketBy(...).sortBy(...).saveAsTable(...)
/ CREATE TABLE ... CLUSTERED BY ... SORTED BY ...
) ou com colunas correlacionadas com a chave de partição (por exemplo, brandName - modelName
, companyID - stockPrice
), mas também quando os dados apresentam alguma ordenação/agrupamento (por exemplo, orderID
, bitcoinValue
).
Esse recurso beta tem uma série de limitações importantes:
- É opcional: precisa ser ativado manualmente, por tabela.
- É somente SQL: não há API de DataFrame para ele.
- Depois que uma tabela é indexada, não é garantido que os efeitos das operações subsequentes de
INSERT
ouADD PARTITION
sejam visíveis até que o índice seja explicitamente REFRESHADO.
Sintaxe SQL
Criar índice
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Permite o salto de dados na tabela especificada para a primeira (i.e. mais à esquerda) N colunas suportadas, em que N é controlado por spark.databricks.io.skipping.defaultNumIndexedCols
(default: 32)
partitionBy
as colunas são sempre indexadas e não contam para esse N.
Criar índice para colunas
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
FOR COLUMNS (col1, ...)
Habilita o salto de dados na tabela especificada para a lista de colunas especificada. Da mesma forma que acima, todas as colunas partitionBy
serão sempre indexadas, além das especificadas.
Descreva o índice
DESCRIBE DATASKIPPING INDEX [EXTENDED] ON [TABLE] [db_name.]table_name
Exibe quais colunas da tabela especificada são indexadas, junto com os tipos correspondentes de estatística em nível de arquivo que são coletados.
Se EXTENDED
for especificado, uma terceira coluna chamada “effectiveness_score” será exibida, fornecendo uma medida aproximada de quão benéfico esperamos que o DataSkipping seja para filtros nas colunas correspondentes.
atualizar o í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 somente as partições especificadas. Em geral, essas operações devem ser mais rápidas do que o índice completo refresh.
Índice de descarte
DROP DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Desativa o salto de dados na tabela especificada e exclui todos os dados do índice.