À 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?
Vous pouvez insérer de nouvelles données dans un tableau de deux manières.
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.
Essayez d'utiliser ceci avec des guillemets simples dans les données:
insert into table test_Hive values ('1','puneet');
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 ...
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.