Requêtes de ruche | 15 Requêtes de base Hive pour les ingénieurs de données

Contenu

Vue d'ensemble

  • Faire connaissance 15 requêtes de base sur les ruches, y compris-
    • Sélections simples: sélection de colonne
    • Sélections simples: sélection de ligne
    • Création de nouvelles colonnes
    • Fonctions de Ruche
  • Cette liste n'est en aucun cas exhaustive.. N'hésitez pas à en rajouter dans la section commentaire.

introduction

requêtes de la ruche apache

Avec les requêtes Apache Hive, vous pouvez interroger le stockage de données distribué, y compris les données Hadoop.

Hive prend en charge ANSI SQL et les transactions atomiques, cohérent, isolé et durable (ACIDE). Pour mettre à jour les données, vous pouvez utiliser l'instruction MERGE, qui répond désormais également aux normes ACID. Les vues matérialisées optimisent les requêtes en fonction des modèles d'accès. Hive prend en charge des tables jusqu'à 300 PB au format de colonne de ligne optimisé (ORC). De plus, d'autres formats de fichiers sont pris en charge.

Vous pouvez créer des tableaux qui ressemblent à ceux d'une base de données relationnelle traditionnelle. Utiliser des instructions d'insertion reconnues, actualisation, Dépose et jointure SQL pour interroger les données de la table.

L'instruction Insert écrit des données dans les tables. Mettre à jour et supprimer les instructions modifier et supprimer les valeurs déjà écrites dans Hive. La déclaration de combinaison simplifie les mises à jour, supprimer et modifier les opérations de capture de données basées sur des tables coexistantes.

Ces instructions prennent en charge la validation automatique qui traite chaque instruction comme une transaction séparée et la confirme après l'exécution de l'instruction SQL. Dans ce billet, nous couvrirons quelques requêtes et fonctions Hive de base qui vous donneront une compréhension de base de la façon d'exécuter des requêtes Hive sur des données distribuées.

Table des matières:

  • Sélections simples: sélection de colonne
  • Sélections simples: sélection de ligne
  • Création de nouvelles colonnes
  • Fonctionnalités de la ruche
    • Fonctions simples
    • Agrégations
    • Fonctions de date

Sélections simples: sélection de colonne

Une ruche, La requête de données s'effectue via une instruction SÉLECTIONNER. Une déclaration select a 6 Éléments essentiels;

  • SELECTIONNER les noms de colonnes
  • FROM nom-table
  • GROUP BY noms de colonnes
  • O conditions
  • AVOIR des conditions
  • TRIER par noms de colonnes

Dans la pratique, très peu de requêtes auront toutes ces clauses, ce qui simplifie de nombreuses requêtes. D'autre part, les conditions dans la clause pueden ser muy complejas y si necesita unir dos o más tablas juntas, il faut plus de clauses (REJOINDRE y ON).

Tous les noms des clauses précédentes ont été écrits en majuscules pour plus de clarté. HQL n'est pas sensible à la casse. Il n'est pas non plus nécessaire d'écrire chaque clause sur une nouvelle ligne, mais il est souvent plus clair de le faire pour toutes les requêtes sauf les plus simples.

Dans cette leçon, Nous allons commencer par le très simple et progresser vers le plus complexe.

Sélections simples: sélection de colonne

Parmi toutes les requêtes Hive, la requête la plus simple est effectivement celle qui renvoie le contenu de la table entière.

SÉLECTIONNER *
DE geog_all;
CRÉER UNE VUE [S'IL N'EXISTE PAS] [nom_base.]nom_vue [(nom de colonne [COMMENTAIRE colonne_commentaire], ...)  ]

Vous feriez mieux de pratiquer et, en général, plus efficace pour lister explicitement les noms de colonnes que vous souhaitez renvoyer.

SELECTIONNER, types de carburant, acorn_type
DE geog_all;

Sélections simples: sélection de ligne

Limiter en même temps les colonnes retournées par une requête, en outre, vous pouvez limiter les lignes renvoyées. El caso más simple dicho de otra forma cuántas filas se desean usando la cláusula Limit.

SELECTIONNER, types de carburant, acorn_type
DE geog_all
LIMITE 10;

Ceci est utile si vous voulez juste avoir une idée de ce à quoi ressemblent les données. Comme d'habitude, vous voudrez restreindre les lignes renvoyées en fonction de certains critères. En d'autres termes, certaines valeurs ou plages dans une ou plusieurs colonnes.

SELECTIONNER, types de carburant, acorn_type
DE geog_all
O types de carburant = "Elecseulement";

L'expression dans la clause where peut être plus complexe et inclure plusieurs colonnes.

SELECTIONNER, types de carburant, acorn_type
DE geog_all
O types de carburant = "Elecseulement" ET acorn_type > 42;

SELECTIONNER, types de carburant, acorn_type
DE geog_all
O types de carburant = "Elecseulement" ET acorn_type > 42 ET noix1 <> "--";

Notez que les colonnes utilisées dans les conditions de la clause Where n'ont pas à apparaître dans la clause Select. D'autres opérateurs peuvent également être utilisés dans la clause where. Pour les expressions complexes, les parenthèses peuvent être utilisées pour faire respecter la priorité.

SELECTIONNER, types de carburant, acorn_type, noix1, ldz
DE geog_all
OÙ
types de carburant = "Elecseulement"
ET acorn_type ENTRE 42 ET 47
ET (noix1 PAS DANS ("PME", "UKI") OU ldz = "--");

Création de nouvelles colonnes

Il est possible de créer de nouvelles colonnes dans la sortie de la requête. Ces colonnes peuvent provenir de combinaisons d'autres colonnes qui utilisent des opérateurs et / ou fonctions Hive intégrées.

SELECTIONNER, eprofileclass, acorn_type, (eprofileclass * acorn_type) AS multiplier, (eprofileclass + acorn_type) AS ajouté
DE edrp_geography_data b;

Vous pouvez trouver une liste complète des opérateurs et des fonctions disponibles dans Hive dans le Documentation.

Lorsque vous créez une nouvelle colonne, es usual proporcionar un ‘alias’ pour la colonne. C'est essentiellement le nom que vous voulez donner à la nouvelle colonne. L'alias est donné immédiatement après l'expression à laquelle il se réfère. En option, vous pouvez ajouter le mot clé AS pour plus de clarté. Si vous ne fournissez pas d'alias pour vos nouvelles colonnes, Hive générera un nom pour vous.

Même si le terme alias peut sembler un peu étrange pour une nouvelle colonne qui n'a pas de nom naturel, alias ‘además se puede utilizar con cualquier columna existente para proporcionar un nombre más significativo en la salida.

Les tables peuvent également recevoir un alias, ceci est particulièrement courant dans les requêtes de jointure impliquant plusieurs tables où il est nécessaire de faire la distinction entre les colonnes portant le même nom dans différentes tables. En même temps utiliser des opérateurs pour créer de nouvelles colonnes, De plus, de nombreuses fonctions Hive intégrées peuvent être utilisées.

Fonctionnalités de la ruche

Fonctions simples

Concat peut être utilisé pour ajouter des chaînes

SELECTIONNER, acorn_category,
acorn_group,
acorn_type,
concaténer (acorn_category, ",", acorn_group, ",", acorn_type)  AS acorn_code
FROM geog_all;

substr peut être utilisé pour extraire une partie d'une chaîne

SELECT anon_id,
heure avancée,
substr (heure avancée, 1, 2) AS jour,
substr (heure avancée, 3, 3) AS mois,
substr (heure avancée, 6, 2) AS année
DE elec_c;

Exemples de longueur, instruction et investissement

SELECTIONNER,
     gland_code,
     longueur (gland_code),
     Instr (gland_code, ',') AS a_catpos,
     Instr (inverser (gland_code), "," ) AS reverse_a_typepo

Où les fonctions indispensables peuvent être imbriquées et les conversions de type

SELECTIONNER,
substr (gland_code, 7, 2) AS chaîne_type_ac,
jeter (substr (gland_code, 7, 2) COMME INT) AS ac_type_int,
substr (gland_code, 7, 2) +1 AS ac_type_not_sure
DE geog_all;

Agrégations

Les fonctions d'agrégat sont utilisées pour effectuer une sorte de calcul mathématique ou statistique sur un groupe de lignes. Les lignes de chaque groupe sont déterminées par les différentes valeurs dans une ou plusieurs colonnes spécifiques. Une liste de toutes les fonctions disponibles est activée dans la documentation Apache.

SELECT anon_id,
              compter (eleckwh) AS total_row_count,
              somme (eleckwh) AS total_period_usage,
              min (eleckwh) AS min_period_usage,
              moyenne (eleckwh) AS avg_period_usage,
             max (eleckwh) AS max_period_usage
       FROM elec_c
GROUP BY anon_id;

Dans l'exemple ci-dessus, cinq agrégations ont été effectuées sur une seule colonne anon_id. Il est possible d'agréger plusieurs colonnes en les spécifiant à la fois dans la clause select et dans la clause group by. Le regroupement s'effectuera selon l'ordre des colonnes listées dans la clause group by. Ce qui n'est pas autorisé, c'est de spécifier une colonne non agrégée dans la clause select qui n'est pas mentionnée dans la clause group by.

SELECT anon_id,
              substr (heure avancée, 6, 2) AS lecture_année,
              compter (eleckwh) AS total_row_count,
              somme (eleckwh) AS total_period_usage,
              min (eleckwh) AS min_period_usage,
              moyenne (eleckwh) AS avg_period_usage,
              max (eleckwh) AS max_period_usage
       FROM elec_c
GROUP BY anon_id, substr (heure avancée, 6, 2);

Malheureusement, la clause group by n'acceptera pas d'alias ‘.

SELECT anon_id,
              substr (heure avancée, 6, 2) AS lecture_année,
              compter (eleckwh) AS total_row_count,
              somme (eleckwh) AS total_period_usage,
              min (eleckwh) AS min_period_usage,
              moyenne (eleckwh) AS avg_period_usage,
              max (eleckwh) AS max_period_usage
      FROM elec_c
GROUP BY anon_id, substr (heure avancée, 6, 2)
ORDRE PAR anon_id, lecture_année;

Mais la clause Order by oui elle le fait.

Le mot-clé Distinct fournit un ensemble d'une combinaison unique de valeurs de colonne dans une table sans aucun type d'agrégation.

SÉLECTIONNER une classe de profil électronique DISTINCT, types de carburant
DE geog_all;

Fonctions de date

Dans les tables elec_c et gas_c, la colonne datetime avancée, même s'il contient des informations sur le type d'horodatage, est défini comme un type de chaîne. Pour la plupart du temps, cela peut être assez pratique. Malgré cela, il y aura des moments où nous aurons vraiment besoin de pouvoir traiter la colonne vertébrale comme un horodatage. L'exemple le plus évident est peut-être lorsque vous devez trier les lignes en fonction de la colonne avancée dans le temps.

Hive fournit une gamme de fonctions associées à la date qui vous permettent de convertir des chaînes en horodatages et, en même temps, extraire des parties de l'horodatage.

unix_timestamp renvoie les données et l'heure actuelles, En nombre entier!

from_unixtime prend un entier et le convertit en une chaîne d'horodatage reconnaissable

SELECT unix_timestamp () AS heure actuelle
DE sample_07
LIMITE 1;

SELECT de_unixtime (unix_timestamp ()) AS heure actuelle
DE sample_07
LIMITE 1;

Il existe plusieurs outils de partie de date qui extrairont les parties pertinentes d'une chaîne d'horodatage

SELECT anon_id,
             from_unixtime (UNIX_TIMESTAMP (date_de_lecture, 'ddMMMyy'))
                  AS proper_date,
            année (from_unixtime (UNIX_TIMESTAMP (date_de_lecture, 'ddMMMyy')))
                 AS full_year,
            mois (from_unixtime (UNIX_TIMESTAMP (date_de_lecture, 'ddMMMyy')))
                AS full_month,
            journée (from_unixtime (UNIX_TIMESTAMP (date_de_lecture, 'ddMMMyy')))
               AS full_day,
           last_day (from_unixtime (UNIX_TIMESTAMP (date_de_lecture, 'ddMMMyy')))
              AS last_day_of_month,
           date_add ( (from_unixtime (UNIX_TIMESTAMP (date_de_lecture, 'ddMMMyy'))),10)
              AS added_days
FROM elec_days_c
ORDER BY proper_date;

conclusion:

Dans la poste, nous couvrons quelques fonctions et requêtes Hive de base. L'exécution de requêtes sur des données distribuées n'est pas très différente de l'exécution de requêtes dans MySQL. Cela suivra quelques articles où nous couvrirons des fonctions et des requêtes plus avancées.. j'espère que vous avez aimé le post. N'oubliez pas de laisser vos commentaires dans la section commentaires ci-dessous.

Je vous recommande de lire ces articles pour vous familiariser avec les outils du big data:

Faites-nous part de vos réflexions dans les commentaires ci-dessous..

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données