2017-10-06 13 views
0

J'ai donc fait toutes mes recherches et je n'ai pas pu voir le même problème dans HIVE.HIVE 2.1.1 Création d'une table CSV-Serde

a suivi le lien ci-dessous et je pas de problèmes avec les données de citations ..

https://github.com/ogrodnek/csv-serde

Ma création de la table externe a les propriétés ci-dessous de serde, mais pour une raison quelconque, la valeur par défaut escapechar (« \ ») est remplacé par quotechar qui est doublequotes (") pour mes données

CREATE EXTERNAL TABLE IF NOT EXISTS people_full(
`Unique ID` STRING, 
. 
. 
. 
. 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "escapeChar" = "\\" 
) 
STORED AS TEXTFILE 

NUMÉRO dE dONNÉES:.

HDFS exemples Source données: "\" entreprise Robs Sortie de la cible HIVE: "" "Robs entreprise

Ainsi, les trois guillemets doubles comme vu dans" "" Robs entreprise après le remplacement provoque la délimitation des données de données indésirables (colonne est très chaîne longue) peut être comme HIVE ne peut pas gérer trois guillemets doubles à l'intérieur des données (quote (") est aussi mon caractère de citation par défaut)? Pourquoi cela se produit-il et existe-t-il une solution? S'il vous plaît, aidez. Merci beaucoup.

Best, Asha

Répondre

0

Essayez avec le Échappé par cela fonctionnera. Veuillez trouver l'exemple de capture d'écran ci-dessous. enter image description here

+0

Salut @ kundam, désolé j'ai édité ma question pour montrer juste SQL.I utilisait "escapeChar" = "\\" alors j'ai le problème de données mentionné (dans mon article), donc je l'ai changé pour "escapeChar" = "\" pour éviter le remplacement et cela fonctionne, mais je ne veux pas changer le caractère d'échappement par défaut qui est backslash. –

+0

Donc mon vrai problème est ('\') en train d'être remplacé par le caractère de citation par défaut, est ce problème connu de toute version de HIVE? Merci pour l'aide. –

+0

S'il vous plaît ** [modifier] ** votre message et montrer le code réel sous forme de texte au lieu de captures d'écran. D'autres ne peuvent pas copier et coller à partir de vos images. [Voir ici] (https://meta.stackoverflow.com/a/285557/1402846) pour plus de détails. Je vous remercie. – Pang

0

Pour importer votre fichier csv à HDFS avec double qoutes entre les données et créer la table ruche pour ce fichier, suivez la requête dans la ruche pour créer table externe qui fonctionne très bien et affiche chaque enregistrement à partir de dans le fichier.

create external table tablename (datatype colname,datatype2 colname2) row format 
SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES 
("separatorChar" = ",","quoteChar" = "\"") stored as textfile location '/dir_name/'; 

Ici, le tablename représente le nom de la table, le type de données est comme chaîne, int ou peut-être autre et colname représente le nom de la colonne que vous allez donner et enfin dir_name est l'emplacement de csv ou un fichier texte dans l'emplacement hdfs.