Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Chaves primárias e índices na linguagem de consulta do Hive são possíveis ou não?


A indexação do Hive foi introduzida no Hive 0.7.0 (HIVE-417) e removida no Hive 3.0 (HIVE-18448) Leia os comentários neste Jira. O recurso era completamente inútil no Hive. Esses índices eram muito caros para big data, RIP.

A partir do Hive 2.1.0 (HIVE-13290) Hive inclui suporte para restrições de chave primária e estrangeira não validadas . Essas restrições não são validadas, um sistema upstream precisa garantir a integridade dos dados antes de serem carregados no Hive. Essas restrições são úteis para ferramentas que geram diagramas ER e consultas. Além disso, essas restrições não validadas são úteis como autodocumentação. Você pode descobrir facilmente o que deve ser um PK se a tabela tiver essa restrição.

No banco de dados Oracle Unique, as restrições PK e FK são apoiadas por índices, para que possam funcionar rapidamente e são realmente úteis. Mas não é assim que o Hive funciona e para o que foi projetado.

Um cenário bastante normal é quando você carregou um arquivo muito grande com dados semiestruturados no HDFS. Construir um índice nele é muito caro e sem índice para verificar a violação de PK só é possível escanear todos os dados. E normalmente você não pode impor restrições em BigData. O processo upstream pode cuidar da integridade e consistência dos dados, mas isso não garante que você finalmente não terá violação de PK no Hive em alguma grande tabela carregada de diferentes fontes.

Alguns formatos de armazenamento de arquivos, como ORC, têm "índices" internos leves para acelerar a filtragem e habilitar o push down de predicado (PPD), nenhuma restrição PK e FK é implementada usando esses índices. Isso não pode ser feito porque normalmente você pode ter muitos desses arquivos pertencentes à mesma tabela no Hive e até mesmo arquivos podem ter esquemas diferentes. Hive criado para petabytes e você pode processar petabytes em uma única execução, os dados podem ser semi-estruturados, os arquivos podem ter esquemas diferentes. O Hadoop não oferece suporte a gravações aleatórias e isso adiciona mais complicações e custos se você quiser reconstruir índices.