Big Data avec Apache Spark et Scala

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données.

introduction

Le Big Data se caractérise souvent par: –

une) Le volume: – Le volume signifie une énorme quantité de données qui doivent être traitées.

B) La vitesse: – La vitesse à laquelle les données arrivent en tant que traitement en temps réel.

C) Véracité: – La véracité signifie la qualité des données (qui doit en fait être excellent pour générer des rapports d’analyse, etc.)

ré) Variété: – Il s’agit des différents types de données telles que

* Données structurées: – Données sous forme de tableau.

* Données non structurées: – Données non présentées sous forme de tableau

* Données semi-structurées: – Mélange de données structurées et non structurées.

Pour travailler avec de gros octets de données, Tout d’abord, nous devons stocker ou vider les données quelque part. Pourtant, La solution à ce problème est HDFS (sistema de archivos distribuido Hadoop).

99428hdfs-architecture-with-default-data-placement-policy-6635668

Prise en charge Hadoop Architecture maître-esclave. Il s’agit d’un type de système distribué où le traitement parallèle des données est effectué. Hadoop se compose de 1 Maître et plusieurs esclaves.

Nœud de regla de nombre: – Pour chaque bloc de données stocké, il y a 2 Exemplaires présents. Une sur différents nœuds de données et une seconde copie sur un autre nœud de données. De cette façon, Dépannage de la tolérance aux pannes.

Le nœud name contient les informations suivantes: –

1) Informations de métadonnées pour les fichiers stockés sur les nœuds de données. Les métadonnées se composent de 2 enregistrements: FsImage et EditLogs. FsImage se compose de l’état complet du système de fichiers depuis le début du nœud de nom. EditLogs contient les modifications récentes apportées au système de fichiers.

2) Emplacement du bloc de fichiers stocké dans le nœud de données.

3) Taille du fichier.

Le nœud de données contient les données réelles.

Donc, Prise en charge HDFS intégrité des données. L’exactitude ou non des données stockées est vérifiée en comparant les données à votre somme de contrôle. Si des défauts sont détectés, Le nom node est signalé. Donc, crée des copies supplémentaires des mêmes données et supprime les copies corrompues.

HDFS se compose de donc le journal d'édition a peut-être augmenté en taille qui fonctionne en même temps que le nœud de nom principal en tant que démon auxiliaire. Pas un nœud de nom de sauvegarde. Lit en permanence tous les systèmes de fichiers et les métadonnées de la RAM du nœud de nom sur le disque dur. Il est responsable de la combinaison d’EditLogs avec le FSImage du nœud de nom.

Donc, HDFS est comme un entrepôt de données où nous pouvons vider n’importe quel type de données. El procesamiento de estos datos requiere herramientas de Hadoop como Ruche (pour la gestion de données structurées), HBase (pour le traitement de données non structurées), etc. Hadoop soutient le concept “Écrire une fois, Prêt pour de nombreux”.

Ensuite, Prenons un exemple et comprenons comment nous pouvons traiter une énorme quantité de données et effectuer de nombreuses transformations à l’aide du langage Scala.

UNE) Configuration de l’IDE Eclipse avec la configuration Scala.

Lien pour télécharger eclipse IDE – https://www.eclipse.org/downloads/

Vous devez télécharger l’IDE Eclipse en gardant à l’esprit les exigences de votre ordinateur. Au démarrage de l’IDE Eclipse, Vous verrez ce type d’écran.

44693eclipse_1-5536478

Aller à Aider -> Marché Eclipse -> Chercher -> Scala-Ide -> Installer sur pc

34897SCALA-5206914

Après cela dans l’IDE Eclipse – sélectionner Perspective ouverte -> Scala, Vous obtiendrez tous les composants SCALA dans l’IDE à utiliser.

32272open20perspective-2951911

Créez un nouveau projet dans Eclipse et mettez à jour le fichier pom en procédant comme suit:https://medium.com/@manojkumardhakad/how-to-create-maven-project-for-spark-and-scala-in-scala-ide-1a97ac003883

Changez la version de la bibliothèque scala en faisant un clic droit sur Projet -> Chemin de construction -> Configurer le chemin de build.

Mettez à jour le projet en faisant un clic droit sur Projet -> Maven -> Mettre à jour le projet Maven -> Forcer l’actualisation de l’instantané / versions. Donc, Le fichier POM est enregistré et toutes les dépendances requises sont téléchargées pour le projet.

Après cela, télécharger la version Spark avec les winutils Hadoop placés sur le chemin d’accès à la corbeille. Suivez ce chemin pour terminer la configuration: https://stackoverflow.com/questions/25481325/how-to-set-up-spark-on-windows

B) Création de sessions Spark – 2 les types.

Spark Session est le point d’entrée ou le début de la création de RDD, Trame de données, Datasets. Pour créer une application Spark, primero necesitamos una session de chispa.

Spark Session peut être 2 les types: –

une) Séance Spark normale: –

13880Spark-Session201-4656380

La sortie s’affichera sous la forme: –

24326Spark20session20Created-4506853

b) Session Spark pour l’environnement Hive: –

Pour créer un environnement de ruche à grande échelle, Nous avons besoin de la même session d’étincelle avec une ligne supplémentaire ajoutée. enableHiveSupport () – activer la prise en charge de Hive, y compris la connectivité au metastore Hive persistant, Prise en charge de Hive Serde et fonctions définies par l’utilisateur Hive.

52138Ruche20Support-5582673

C) Creación de RDD (Ensemble de données distribué résilient) et la transformation de RDD en DataFrame: –

Ensuite, après la première étape de la création de Spark-Session, nous sommes libres de créer des RDD, Jeux de données ou trames de données. Il s’agit des structures de données dans lesquelles nous pouvons stocker de grandes quantités de données.

Élastique:- Cela signifie Fault Tolerance afin qu’ils puissent recalculer les partitions manquantes ou endommagées en raison de défaillances de nœuds.

Partitionné:- signifie que les données sont réparties sur plusieurs nœuds (Le pouvoir du parallélisme).

Ensembles de données: – Données qui peuvent être téléchargées en externe et qui peuvent se présenter sous n’importe quelle forme, c'est-à-dire, JSON, CSV ou fichier texte.

Les caractéristiques des RDD sont les suivantes: –

une) Calcul en mémoire: – Après avoir effectué des transformations de données, les résultats sont stockés dans la RAM plutôt que sur le disque. Donc, RDD ne peut pas utiliser de grands ensembles de données. La solution à ce problème est, au lieu d’utiliser RDD, L’utilisation de DataFrame est prise en compte / Jeu de données.

B) Évaluations paresseuses: – Cela signifie que les actions des transformations effectuées ne sont évaluées que lorsque la valeur est nécessaire.

39080Caractéristiques-de-RDD-IN-Spark202-6810382

C) Tolérance aux pannes: – Les RDD Spark sont tolérants aux pannes car ils suivent les informations de traçabilité des données pour reconstruire automatiquement les données perdues en cas de défaillance.

ré) Immuabilité: – Données immuables (Non modifiable) Ils peuvent toujours être partagés en toute sécurité entre plusieurs processus. Nous pouvons recréer le RDD à tout moment.

moi) Fractionnement: – Cela signifie diviser les données, Ainsi, chaque partition peut être exécutée par différents nœuds, Ainsi, le traitement des données devient plus rapide.

F) Persistance:- Les utilisateurs peuvent choisir les RDD qu’ils doivent utiliser et choisir une stratégie de stockage pour eux.

gramme) Exploitation des céréales secondaires: – Cela signifie que lorsque les données sont divisées en différents clusters pour différentes opérations, podemos aplicar transformaciones una vez para todo el grappe y no para diferentes particiones por separado.

ré) Utilisation de la structure de données et exécution de transformations: –

Lors de la conversion d’un RDD en trames de données, doit ajouter Importer spark.implicits._ Après l’étincelle session.

Le cadre de données peut être créé de plusieurs façons. Voyons les différentes transformations qui peuvent être appliquées au cadre de données.

Paso 1:- Création d’un cadre de données: –

571491-7081897

Paso 2:- Exécution de différents types de transformations dans un cadre de données: –

une) Veuillez sélectionner:- Sélectionnez les colonnes requises dans le bloc de données dont l’utilisateur a besoin.

Entrée1.select (“arrg_id”, “da_proc_id”). Spectacle ()

39981sélectionner-9988946

B) selectExpr: – Sélectionnez les colonnes requises et renommez-les.

Entrée2.selectExpr (“arrg_id11”, “prd_src_sys_id11 comme prd_src_new”, “da_proc_id11”). Spectacle ()

99377sélectionnerexp-1320093

C) avec colonne: – withColumns permet d’ajouter une nouvelle colonne avec la valeur particulière que l’utilisateur souhaite dans le bloc de données sélectionné.

Entrée1.avecColonne (“New_col”, illuminé (nul))

36560aveccolonne-5137029

ré) withColumnRenamed: – Renommez les colonnes de la trame de données particulière dont l’utilisateur a besoin.

Input1.withColumnRenamed (“da_proc_id”, “da_proc_id_newname”)

88744aveccolonne20renommé-9628908

moi) tomber:- Supprimer les colonnes dont l’utilisateur ne veut pas.

Entrée2.drop (“arrg_id11",” prd_src_sys_id11", “da_proc_id11”)

46048goutte-8664125

F) Connexion:- Unit 2 trames de données avec les clés de jointure des deux trames de données.

Entrée1.joindre (Entrée2, entrée1.col (“arrg_id”) === Entrée2.col (“arrg_id11"),” droit “)

.avecColonne (“prd_src_sys_id”, illuminé (nul))

94582join-3084600

gramme) Fonctionnalités ajoutées:- Certaines des fonctionnalités ajoutées incluent

* Raconter:- Donne le nombre d’une colonne particulière ou le nombre de la trame de données dans son ensemble.

imprimer (Entrée1.count ())

42627compte-9386655

* Max .: – Donne la valeur maximale de la colonne en fonction d’une condition particulière.

input2.groupPar (“da_proc_id”). max (“arrg_id”). withColumnRenamed (“max (arrg_id)”,
“Arrg_id_max”)

93270max-5414698

* Min: – Donne une valeur minimale de la colonne dans le bloc de données.

83162min-5753036

h) filtre: – Filtrer les colonnes d’une trame de données en exécutant une condition particulière.

58433filtre-2863035

je) printSchéma: – Fournit des détails tels que les noms de colonne, Types de données de colonne et possibilité d’annulation ou non d’une colonne.

99549printschema-6469355

j) Union: – Combinez les valeurs de 2 trames de données tant que les noms de colonne des deux trames de données sont identiques.

85162union-9027829

MOI) Ruche:-

Hive est l’une des bases de données les plus utilisées dans le Big Data. Il est une sorte de base de données relacional donde los datos se almacenan en formato tabular. La base de données par défaut de la ruche est la Derby. Processus de la ruche Structuré et semi-structuré Les données. En cas de données non structurées, Tout d’abord, créez une table dans la ruche et chargez les données dans la table, ainsi structuré. Hive prend en charge tous les types de données primitives SQL.

Supports de ruche 2 types de tableaux: –

une) Tables gérées: – Il s’agit de la table par défaut dans Hive. Lorsque l’utilisateur crée une table dans Hive sans la spécifier comme externe, par défaut, une table interne est créée à un emplacement spécifique dans HDFS.

Par défaut, Une table interne sera créée dans un chemin de dossier similaire à / Nom d'utilisateur / ruche / Stock Répertoire HDFS. Nous pouvons remplacer l’emplacement par défaut par la propriété location lors de la création de la table.

Si nous éliminons la table ou la partition gérée, les données de table et les métadonnées associées à cette table seront supprimées du HDFS.

B) Table externe: – Les tables externes sont stockées en dehors du répertoire du coffre-fort. Ils peuvent accéder aux données stockées dans des sources telles que des emplacements HDFS distants ou des volumes de stockage Azure.

Chaque fois que nous laissons tomber le panneau extérieur, Seules les métadonnées associées à la table seront supprimées, les données de la table restent intactes par Hive.

Nous pouvons créer la table externe en spécifiant l’attribut EXTERNE dans l’instruction de la table de création Hive.

Commande de création d’une table externe.

94763Create20table-7512342

Commande permettant de vérifier si la table créée est externe ou non: –

DESC formaté

46379desc20formatted-8577196

F) Création d’un environnement de ruche dans Scala Eclipse: –

Paso 1: – Ajout de la dépendance Hive Maven au fichier pom Eclipse.

81007hive20dépendance-4174738

Paso 2:- Ajout de Spark-Session avec enableHiveSupport au générateur de session.

Paso 3:- Commande Créer une base de données

Spark.sqlContext.sql («  » « Créer gfrrtnsg_staging base de données » «  »)

Cette commande, lorsqu’elle est exécutée, crée une base de données dans le répertoire hive du système local.

83828jidnasa_database-9918764

Paso 4:- Commande pour créer une table dans eclipse

L’exécution de cette commande crée une table dans le dossier de la base de données dans le répertoire local.

30664Ruche1-3942431

Après avoir créé une table, Vous obtiendrez une table créée dans le dossier de la base de données sur votre système informatique.

23497jidnasa_table-5602946

Paso 5: – Chargement de données dans des tables: –

spark.sqlContext.sql («  » « CHARGER L’ENTRÉE DE DONNÉES 'C: sampledata ÉCRASER DANS LA TABLE frzn_arrg_link » «  »)

77667jidnasa_inside_table-5068983

Lorsque vous exécutez cette commande, les données sont chargées dans des tables et, donc, ils donnent la sortie précédente.

Donc, De cette façon, les données peuvent être stockées dans des tables de ruche et chargées dans des trames de données et exécuter vos programmes.

Abonnez-vous à notre newsletter

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