HCatalog - Index

Créer un index

Un index n'est rien d'autre qu'un pointeur sur une colonne particulière d'une table. Créer un index signifie créer un pointeur sur une colonne particulière d'une table. Sa syntaxe est la suivante -

CREATE INDEX index_name
ON TABLE base_table_name (col_name, ...)
AS 'index.handler.class.name'
[WITH DEFERRED REBUILD]
[IDXPROPERTIES (property_name = property_value, ...)]
[IN TABLE index_table_name]
[PARTITIONED BY (col_name, ...)][
   [ ROW FORMAT ...] STORED AS ...
   | STORED BY ...
]
[LOCATION hdfs_path]
[TBLPROPERTIES (...)]

Exemple

Prenons un exemple pour comprendre le concept d'indice. Utilisez le mêmeemployee table que nous avons utilisée précédemment avec les champs Id, Name, Salary, Designation et Dept. Créez un index nommé index_salary sur le salary colonne de la employee table.

La requête suivante crée un index -

./hcat –e "CREATE INDEX inedx_salary ON TABLE employee(salary)
AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler';"

C'est un pointeur vers le salarycolonne. Si la colonne est modifiée, les modifications sont stockées à l'aide d'une valeur d'index.

Supprimer un index

La syntaxe suivante est utilisée pour supprimer un index -

DROP INDEX <index_name> ON <table_name>

La requête suivante supprime l'index index_salary -

./hcat –e "DROP INDEX index_salary ON employee;"