J'ai une instruction de création comme
CREATE TABLE temp_tbl (EmpId String, Salary int);
Je voudrais insérer un identifiant d'employé et une valeur vide dans le tableau.
Donc, ce que j'ai fait est
CREATE TABLE temp_tbl (EmpId String,Salary int) TBLPROPERTIES ('serialization.null.format' = '');
Mais le résultat attendu est
hive> select * from temp_tbl; OK 013 NULL ---> Blank instead of NULL
3. J'ai essayé de créer une table avec la propriété de sérialisation
hive> select * from temp_tbl; OK 013 NULL
Cela n'a pas non plus changé la valeur NULL en vide.
Quoi peut être la solution de contournement pour le même.
3 Réponses :
Cas d'utilisation lors de la sélection des données.
Select (CASE WHEN columnName is null THEN '' ELSE columnName END) as 'Result' from temp_tbl;
Mon exigence est d'insérer une valeur vide dans la colonne de salaire sans aucune condition de cas
@UnmeshaSreeVeni Vous ne pouvez pas insérer de valeur vide dans la colonne Integer car Integer lui-même ne peut pas être vide, seule la chaîne peut être vide, la chaîne vide est une valeur de chaîne normale comme toute autre chaîne. L'entier peut être NULL ou un nombre valide
Tous les types sauf strings / varchar / char et certains types complexes comme array, dans Hive ne peuvent pas être vides, seul NULL est possible. La chaîne vide ''
est une valeur tout à fait normale de type String. Vous pouvez également produire un tableau vide () (tableau avec une taille nulle).
Pour contourner le problème , vous pouvez utiliser des valeurs prédéfinies qui ne figurent normalement pas dans vos données pour représenter des valeurs numériques spéciales, telles que -99999. Vous pouvez également stocker vos valeurs numériques dans une colonne String, dans ce cas, vous pourrez y avoir des valeurs vides. Mais il n'est pas possible d'attribuer (transtyper) des chaînes vides à des types numériques, car une telle valeur vide n'est pas autorisée.
Si vous essayez d'attribuer une chaîne vide à une colonne numérique ou de convertir en type numérique, le résultat sera le même que si vous convertissez une chaîne non numérique en numérique - NULL (dans Hive s'il n'est pas possible de convertir, il renvoie NULL ) ou obtenez java.lang.NumberFormatException en Java.
Sachant que le type de données Int peut être NULL ou entier, je réfléchirais à la manière de contourner le problème.