Les types et la syntaxe de données de porc de Hadoop

Les types de données de porcs constituent le modèle de données pour savoir comment Pig pense de la structure des données qu'il traite. Avec Pig, le modèle de données se définie lorsque les données sont chargées. Toutes les données que vous chargez dans Pig à partir du disque va avoir un schéma et la structure particulière. Pig doit comprendre que la structure, donc quand vous faites le chargement, les données passe automatiquement à travers une cartographie.

Heureusement pour vous, le modèle de données Pig est assez riche pour gérer plus rien jeté son chemin, y compris table- comme les structures et les structures de données hiérarchiques imbriqués. En termes généraux, cependant, les types de données de porc peuvent être divisés en deux catégories: les types scalaires et des types complexes. Scalaire types contiennent une seule valeur, alors que complexe types contiennent d'autres types, tels que les types énumérés ci-dessous Tuple, Bag and Map.

Pig Latin a ces quatre types dans son modèle de données:

  • Atom: Un atome est une valeur unique, comme une chaîne ou un nombre - 'Diego', par exemple. Des valeurs atomiques de porc sont des types scalaires qui apparaissent dans la plupart des langages de programmation - int, long, float, double, chararray et bytearray, par exemple.

  • Tuple: UN tuple est un enregistrement qui se compose d'une séquence de trames. Chaque champ peut être de tout type - «Diego», «Gomez», ou 6, par exemple). Pensez à un tuple comme une ligne dans une table.

  • Sac: UN sac est un ensemble de tuples non uniques. Le schéma du sac est souple - chaque tuple dans la collection peut contenir un nombre arbitraire de champs, et chaque champ peut être de tout type.

  • Carte: Une carte est un ensemble de paires de valeurs clés. Tout type peut être stocké dans la valeur, et la clé doit être unique. La clé d'une carte doit être une chararray et la valeur peut être de tout type.




Le chiffre offre quelques beaux exemples de Tuple, sac, et Carte types de données, aussi bien.

image0.jpg

La valeur de tous ces types peut également être nulle. La sémantique pour null sont similaires à ceux utilisés dans SQL. Le concept de null Pig signifie que la valeur est inconnue. Null peuvent apparaître dans les données dans les cas où les valeurs sont illisible ou méconnaissable - par exemple, si vous deviez utiliser un type de données incorrect dans l'instruction LOAD.

Null pourrait être utilisé comme un espace réservé jusqu'à ce que des données sont ajoutées ou comme une valeur pour un champ qui est facultative.

Pig Latin a une syntaxe simple avec la sémantique puissants que vous utiliserez pour effectuer deux opérations primaires: accès et transformer des données.

Dans un contexte Hadoop, accès signifie que les données permettant aux développeurs de charger, de stocker et de données de flux, alors que transformation signifie que les données en tirant parti de la capacité de porc au groupe, joindre, mélanger, split, filtrer et trier les données. Le tableau donne un aperçu des opérateurs associés à chaque opération.

Opérateurs Pig Latin
OpérationOpérateurExplication
Accès aux donnéesLoad / StoreLire et écrire des données le système de fichiers
DUMPEcrire sortie standard (stdout)
STREAMEnvoyer tous les records grâce binaire externe
TransformationsPOUR CHAQUEAppliquer expression à chaque enregistrement et la sortie d'un ou morerecords
FILTREAppliquer prédicat et supprimer des enregistrements qui ne meetcondition pas
GROUPE / COGROUPLes enregistrements d'agrégat ayant la même clé d'un ou de moreinputs
INSCRIPTIONJoignez-vous à deux ou plusieurs enregistrements basés sur une condition
CROSSProduit cartésien de deux entrées ou plus
COMMANDETrier les enregistrements basés sur la touche
DISTINCTSupprimer les doublons
UNIONFusionner les deux ensembles de données
DIVISÉDonnées de diviser en deux ou plusieurs sacs sur la base de prédicat
LIMITEsous-ensemble du nombre de dossiers

Pig fournit également quelques opérateurs qui sont utiles pour le débogage et le dépannage, comme indiqué:

Opérateurs pour le débogage et de dépannage
OpérationOpérateurDescription
DéboguerDESCRIBERetour le schéma d'une relation.
DUMPVider le contenu d'un rapport à l'écran.
EXPLIQUERAffichez les plans d'exécution de MapReduce.

Une partie du changement de paradigme de Hadoop est que vous appliquez votre schéma à Lire à la place de la charge. Selon l'ancienne façon de faire les choses - la manière SGBDR - lorsque vous chargez des données dans votre système de base de données, vous devez le charger dans un ensemble bien défini de tables. Hadoop vous permet de stocker toutes ces données brutes initial et d'appliquer le schéma à Lire.

Avec Pig, vous faites cela pendant le chargement des données, avec l'aide de l'opérateur de LOAD.

L'instruction using option définit comment cartographier la structure de données dans le fichier du modèle de données Pig - dans ce cas, la structure PigStorage () de données, qui analyse des fichiers texte délimité. (Cette partie de la déclaration UTILISATION est souvent considéré comme un Func LOAD et fonctionne de façon similaire à un désérialiseur personnalisé.)

L'option clause AS définit un schéma pour les données qui sont en cours de mappage. Si vous ne l'utilisez une clause AS, vous êtes essentiellement dire la Func de chargement par défaut d'attendre d'un fichier texte brut qui est délimité par des tabulations. En l'absence de schéma fourni, les champs doivent être référencées par leur position car aucun nom est défini.

Utilisant comme clauses signifie que vous avez un schéma en place à temps pour lire vos fichiers de texte, ce qui permet aux utilisateurs de démarrer rapidement et fournit la modélisation de schéma agile et la flexibilité de sorte que vous pouvez ajouter plus de données à votre analyse.

L'opérateur LOAD fonctionne selon le principe de évaluation paresseuse, également dénommé appel par nécessité. Maintenant paresseux ne semble pas particulièrement louable, mais tout ce qu'il signifie est que vous retardez l'évaluation d'une expression jusqu'à ce que vous avez vraiment besoin.

Dans le cadre de l'exemple de porc, ce qui signifie que, après la déclaration de LOAD est exécutée, aucune donnée est déplacée - rien ne se ballottés - jusqu'à ce qu'une déclaration d'écrire des données est rencontré. Vous pouvez avoir un script de porc qui est une page de long rempli de transformations complexes, mais rien est exécuté jusqu'à ce que l'instruction DUMP ou STORE est rencontré.


» » » » Les types et la syntaxe de données de porc de Hadoop