web-dev-qa-db-fra.com

Insérer des données dans la table Hive

À l'aide d'une distribution Cygwin, j'ai installé Hadoop 0.20.3 et Hive 0.11.0.

Tout d’abord, je ne comprends pas comment utiliser la CLI Hive:

Hive> show tables;

Puis entrez et rien ne se passe. Je peux exécuter des requêtes en utilisant Hive -e/-f.

Ensuite, j'ai créé un tableau:

CREATE TABLE Tweet_table(
Tweet STRING
)
COMMENT 'Table of string'

Mais comment puis-je insérer des données dans cette table? Je vois des exemples de INSERT INTO mais quand j'essaie:

INSERT INTO TABLE Tweet_table (Tweet) VALUES ("data")

J'ai une erreur:

FAILED: ParseException line 1:30 cannot recognize input near '(' 'Tweet' ')' in select clause

Comment puis-je ajouter des données dans mon tableau?

15
Apaachee

Vous pouvez insérer de nouvelles données dans un tableau de deux manières.

  1. Chargez les données d’un fichier dans une table à l’aide de load command.

    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename.
    
  2. Vous pouvez insérer de nouvelles données dans la table en utilisant select query.

    INSERT INTO table tablename1 select columnlist FROM secondtable;
    
34

Si vous avez déjà une table pre_loaded_tbl avec des données. Vous pouvez utiliser une astuce pour charger les données dans votre table avec la requête suivante

INSERT INTO TABLE Tweet_table 
  SELECT  "my_data" AS my_column 
    FROM   pre_loaded_tbl 
   LIMIT   5;

Veuillez également noter que "my_data" est indépendant de toute donnée dans le pre_loaded_tbl. Vous pouvez sélectionner n'importe quelle donnée et écrire n'importe quel nom de colonne (ici my_data et my_column). Hive ne nécessite pas d'avoir le même nom de colonne. Cependant, la structure de l'instruction select doit être identique à celle de votre Tweet_table. Vous pouvez utiliser limit pour déterminer le nombre de fois que vous pouvez insérer dans Tweet_table.

Toutefois, si vous n'avez créé aucune table, vous devrez charger les données à l'aide de la copie de fichier ou charger les commandes de données dans les réponses ci-dessus. 

4
Animesh Raj Jha

Essayez d'utiliser ceci avec des guillemets simples dans les données:

insert into table test_Hive values ('1','puneet');
3
Puneet Sharma

Si la table est sans partition, le code sera,

Insérer dans la table table_name sélectionner col_a, col_b, col_c de another_table(source table) 

- là n'importe quelle condition peut être appliquée telle que limite, grouper par, commander par etc ...

Si la table est avec des partitions alors le code sera,

set Hive.exec.dynamic.partition = true;
set Hive.exec.dynamic.partition.mode = non strict;

insérer dans la table table_name partition (partition_col1, paritition_col2) sélectionner col_a, col_b, col_c, partition_col1, partition_col2 à partir de another_table(source table) 

- là n'importe quelle condition peut être appliquée telle que limite, grouper par, commander par etc ...

0
Dhrub

Comme je rencontrais un problème similaire, j’ai utilisé impala pour insérer la seule ligne dans ma table et cela fonctionnait pour la même requête. Cela fonctionnera à coup sûr.

0
kuldeep singh