| Entrée | Sortie | Alias |
|---|---|---|
| ✔ | ✗ |
Description
HiveText lit le format de sérialisation texte utilisé par les tables Apache Hive
(format produit par le LazySimpleSerDe de Hive). Il s’agit d’un format texte
délimité, semblable à CSV, dans lequel les champs sont
séparés par le délimiteur Hive par défaut \x01 (Ctrl-A). Le délimiteur de champ est
configurable via input_format_hive_text_fields_delimiter.
HiveText est un format d’entrée uniquement. Les données n’ont pas de ligne d’en-tête : les valeurs sont
associées aux colonnes de la table de destination selon leur position, de sorte que les noms et les types des
colonnes sont repris de la table (ou d’une structure explicitement fournie)
plutôt qu’inférés à partir des données. Lors de la lecture, ClickHouse analyse les
dates et heures en mode best-effort (voir date_time_input_format),
complète les champs de fin omis avec les valeurs par défaut des colonnes et ignore les champs qu’il ne
reconnaît pas.
Dans un champ, les valeurs sont analysées à l’aide des mêmes règles d’échappement que CSV, plutôt
que des délimiteurs imbriqués de Hive. En particulier, une colonne de type
Array est lue à partir de la
représentation entre crochets (par exemple, "['a','b','c']"), et non à partir de valeurs séparées par
le délimiteur de collection Hive \x02.
Les paramètres de délimiteurs imbriqués n’ont aucun effetLes paramètres
input_format_hive_text_collection_items_delimiter et
input_format_hive_text_map_keys_delimiter
sont acceptés pour des raisons de compatibilité, mais ne sont actuellement pas utilisés lors de l’analyse.input_format_hive_text_allow_variable_number_of_columns) :
pour les lignes comportant moins de champs que la table, les colonnes manquantes sont remplies avec des
valeurs par défaut, et pour les lignes comportant des champs supplémentaires en fin de ligne, ces champs sont ignorés.
Exemple d’utilisation
,) à l’aide de
input_format_hive_text_fields_delimiter, afin de rendre les fichiers d’entrée
plus faciles à lire.
Lecture d’un fichier HiveText
hive_data.txt avec des champs séparés par des virgules :
hive_data.txt
FORMAT HiveText :
Query
Response
1,3, ne contient que deux champs ; la colonne manquante c
est donc renseignée avec sa valeur par défaut 0.
Nombre variable de colonnes
input_format_hive_text_allow_variable_number_of_columns = 1,
les lignes qui comportent plus de champs que la table n’a de colonnes voient simplement les champs
supplémentaires en fin de ligne ignorés :
hive_extras.txt
Query
Response
input_format_hive_text_allow_variable_number_of_columns = 0 à la place
impose un nombre strict de champs, et une ligne comportant moins de champs que la table déclenche
une exception d’analyse.
Paramètres de format
| Paramètre | Description | Par défaut |
|---|---|---|
input_format_hive_text_fields_delimiter | Délimiteur entre les champs dans Hive Text File | \x01 |
input_format_hive_text_collection_items_delimiter | Délimiteur entre les éléments d’une collection (Array ou Map) dans Hive Text File. Accepté, mais actuellement non utilisé lors de l’analyse. | \x02 |
input_format_hive_text_map_keys_delimiter | Délimiteur entre une paire clé/valeur d’une Map dans Hive Text File. Accepté, mais actuellement non utilisé lors de l’analyse. | \x03 |
input_format_hive_text_allow_variable_number_of_columns | Ignore les colonnes supplémentaires dans l’entrée Hive Text (si le fichier comporte plus de colonnes que prévu) et traite les champs manquants comme des valeurs par défaut | 1 |