J'ai essayé de créer une table dans Hive en utilisant la commande suivante:
LOAD DATA INPATH '/user/root/stockdata/APPL.csv' OVERWRITE INTO TABLE apple;
Ensuite, j'ai essayé de charger des données en utilisant la commande:
CREATE TABLE apple (dates STRING, open INT, high INT, low INT, close INT, adj_close DECIMAL, vol INT) row format delimited fields terminated by ',' lines terminated by '\n' tblproperties ("skip.header.line.count"="1");**
Le fichier APPL.csv est stocké dans HDFS
L'exécution de ce qui précède a entraîné l'erreur suivante:
Erreur: Erreur lors de la compilation de l'instruction: FAILED: SemanticException Impossible de charger les données dans la table de destination. Erreur: le fichier que vous êtes la tentative de chargement ne correspond pas au format de fichier de la destination table. (état = 42000, code = 40000)
Quelqu'un peut-il aider à résoudre ce problème?
3 Réponses :
Placez le fichier directement dans l'emplacement de la table.
hdfs dfs -copyFromLocal /user/root/stockdata/APPL.csv' /user/<username>/apple
Remplacez l'emplacement de destination par l'emplacement de votre table. Vous pouvez le vérifier en utilisant DESCRIBE FORMATTED tablename
.
Vous pouvez charger les données dans la table de plusieurs manières !! Mais assurez-vous que le format de la table est valide.
Mettez d'abord la table spécifique dans l'emplacement de la table.
Syntaxe: hadoop fs -put chemin_source destination_hive_table_location
Ex: hadoop fs -put APPL.csv /user/test.db/apple/APPL.csv
Une fois le fichier dans le système de fichiers Hadoop, nous pouvons charger le fichier dans la table via la commande load dans la console hive
charger les données dans le chemin '/user/test.db/apple/APPL.csv' dans la table apple;
PS: Vous chargez les données CSV, assurez-vous donc que le tableau a le bon format de fichier d'entrée et de sortie de texte.
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
Cela a peut-être à voir avec la création de votre table J'ai eu la même erreur que je l'ai résolue en ajoutant "STORED AS TEXTFILE" à la fin de la requête de la ruche de la création de la table
plus tôt ma table était
CREATE TABLE %(output_db)s.%(selected_query_tbl)s ( query VARCHAR(255) ,ATC_beyond_10_percentage DECIMAL(25,25) ,ATC_rate DECIMAL(25,25) ,block_5_tau DECIMAL(25,25) ,Kendall_tau DECIMAL(25,25) )STORED AS TEXTFILE;
maintenant elle est
CREATE TABLE %(output_db)s.%(selected_query_tbl)s ( query VARCHAR(255) ,ATC_beyond_10_percentage DECIMAL(25,25) ,ATC_rate DECIMAL(25,25) ,block_5_tau DECIMAL(25,25) ,Kendall_tau DECIMAL(25,25) );
J'espère que ça aide :)