Exemples de commandes d'insertion Hive

Une ruche DML commande à explorer est la INSERT commande. Vous avez en gros trois INSERT variants- deux d'entre eux sont présentés dans la liste suivante. Pour démontrer cette nouvelle commande DML, vous allez créer une nouvelle table qui va contenir un sous-ensemble des données de la FlightInfo2008 table.

(UN) CREATE TABLE IF NOT EXISTS myFlightInfo (Année SMALLINT, DontQueryMonth TINYINT, DAYOFMONTH TINYINT, DayOfWeek TINYINT, DepTime SMALLINT, ArrTime SMALLINT, UniqueCarrier STRING, FlightNum STRING, AirTime SMALLINT, ArrDelay SMALLINT, DepDelay SMALLINT, STRING d'origine, Dest STRING, Annulé SMALLINT, CancellationCode STRING) COMMENT 'Vol InfoTable'PARTITIONED PAR (Mois TINYINT) ROW FORMAT DELIMITEDFIELDS terminé par', 'LINES TERMINATED BY' n '(B) Stocké comme RCFILETBLPROPERTIES («créateur» = «Bruce Brown ',' created_at '=' Lun 2 septembre 14:24:19 EDT 2013») -(C) INSERT OVERWRITE TABLE myflightinfoPARTITION (Mois = 1) Sélectionnez l'année, le mois, DAYOFMONTH, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, AirTime, ArrDelay, DepDelay, Origine, Dest, Annulé, CancellationCodeFROM FlightInfo2008 OÙ Mois = 1-(RÉ) DE FlightInfo2008INSERT INTO TABLE myflightinfoPARTITION (Mois = 2) Choix de l'année, le mois, DAYOFMONTH, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, AirTime, ArrDelay, DepDelay, Origine, Dest, Annulé, CancellationCode OÙ Mois = 2... (3 mois à 11 ignorées par souci de brièveté)INSERT INTO TABLE myflightinfoPARTITION (Mois = 12) Sélectionnez l'année, le mois, DAYOFMONTH, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, AirTime, ArrDelay, DepDelay, Origine, Dest, Annulé, CancellationCode OÙ Mois = 12(E) ruche (Données de vol)> VOIR CLOISONS myflightinfo-OKmonth = 1 mois = 10 mois = 11 mois = 12 mois = 9 ...(F) $ Ls /home/biadmin/Hive/warehouse/flightdata.db/myflightinfomonth=1 mois = 11 mois = 2 mois = 4 mois = 6 mois = 8 mois = 10 mois = 12 mois = 3 mois = 5 mois = 7 = 9 mois(G) HIVE_HOME $ / bin / ruche --service rcfilecat / home / BiAdmin / ruche / entrepôt / flightdata.db / myflightinfo / mois = 12 / 000000_0 ... 200812 13 6 655 856 163 885 DL 0 -5 PBI ATL 0200812 13 6 12511446DL 163989 9 11 SAI ATL 0200812 13 6 11101413DL 1641104 -5 7 SAT ATL 0

Dans l'étape (A), vous créez cette nouvelle table et de spécifier que le format de fichier sera rangée en colonne (étape (B)) à la place du texte. Ce format est plus compact que le texte et effectue souvent mieux, en fonction de vos habitudes d'accès. (Si vous avez accès à un petit sous-ensemble de colonnes au lieu de rangées entières, essayez la Rcfile format).

Le SerDe par défaut Rcfile le format est ColumnarSerDe. Vous pouvez vérifier ce fait en exécutant la DESCRIBE myFlightInfo PROLONGÉE HiveQL commande de l'interface de ligne de commande.

Après la création de la table, vous utilisez le INSERT OVERWRITE commande [voir l'étape (C)] pour insérer des données via un SELECT déclaration de la FlightInfo2008 table. Notez que vous êtes le partitionnement des données en utilisant le PARTITION le mot-clé sur la base de Mois champ.




Une fois que vous avez terminé, vous aurez 12 partitions de table, ou les répertoires réels, sous la entrepôt répertoire dans le système de fichiers sur votre machine virtuelle, correspondant aux 12 mois de l'année. Le partitionnement peut améliorer considérablement les performances de votre requête si vous souhaitez interroger les données dans le myFlightInfo table pour seulement un certain mois.

Vous pouvez voir les résultats de la PARTITION approche avec le AFFICHER LES PORTES commande à étapes (e) et (F). Avis à l'étape (D) que vous utilisez une variante de la INSERT commande pour insérer des données dans plusieurs partitions en une seule fois. Seulement 2 et 12 mois sont montré par souci de concision, mais à 11 mois 3 aurait la même syntaxe.

Les partitions sont très utiles pour le programmeur Hive. Cependant, il est pas rare de rencontrer un ensemble de données où le partitionnement pourrait devenir lourd, surtout si plusieurs partitions sont spécifiées [PARTITION BY (Pays STRING, STRING NomPersonne), par example]. Douze partitions sont une chose - 7 milliards de partitions seraient tout à fait une autre!

La solution à la partition étalement est héliporté. Bucketing dans la ruche fonctionne en vous permettant de spécifier un nombre raisonnable de seaux, puis le système tente de répartir les données dans le nombre de seaux que vous spécifiez. [Cela pourrait ressembler PARTITION BY (...) CLUSTERED PAR (BucketingColumn) EN x SEAUX.]

En outre, cette fonctionnalité permet Table échantillonnage - une technique qui permet aux utilisateurs d'écrire des requêtes de la ruche sur un échantillon de données à la place de l'ensemble du tableau. Table HiveQL échantillonnage peut être très utile pour les grandes analyses de données.

Vous pouvez également utiliser cette FROM table1 table2 INSERT INTO SELECT ... format à insérer dans plusieurs tables à la fois. Tu utilises INSERT au lieu de OVERWRITE ici pour montrer la possibilité d'insérer à la place de l'écraser. Hive permet seulement ajoute, pas inserts, dans les tables, de sorte que le INSERT mot-clé indique simplement la ruche pour ajouter les données à la table.

Enfin, la note à l'étape (G) que vous devez utiliser un service de commande spéciale Hive (rcfilecat) Pour voir ce tableau dans votre entrepôt, parce que la Rcfile format est un format binaire, à la différence du précédent TEXTFILE Exemples de format.

La INSERT Commande DML a trois variantes. La troisième variante est la dynamique Inserts de partition variante. Dans la liste, vous divisez la myFlightInfo Table en 12 segments, 1 par mois. Si vous aviez des centaines de partitions, cette tâche serait devenu très difficile, et il serait le script nécessaire pour faire le travail.

Au lieu de cela, la ruche supporte une technique pour créer de manière dynamique des partitions avec le INSERT OVERWRITE déclaration. Donc, si vous vous trouvez avoir besoin de tirer parti de partitionnement de table avec un grand, et éventuellement variable, nombre de partitions, consultez les inserts de partition dynamiques figurer dans le manuel Hive DML Langue.


» » » » Exemples de commandes d'insertion Hive