Big Data con Apache Spark y Scala

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati.

introduzione

I Big Data sono spesso caratterizzati da: –

un) Volume: – Volume significa un'enorme ed enorme quantità di dati che devono essere elaborati.

B) Velocità: – La velocità con cui i dati arrivano come elaborazione in tempo reale.

C) veridicità: – Veridicità significa qualità dei dati (che in realtà deve essere ottimo per generare report di analisi, eccetera.)

D) Varietà: – Significa i diversi tipi di dati come

* Dati strutturati: – Dati in formato tabella.

* Dati non strutturati: – Dati non in formato tabella

* Dati semistrutturati: – Combinazione di dati strutturati e non strutturati.

Per lavorare con grandi byte di dati, Per prima cosa dobbiamo archiviare o scaricare i dati da qualche parte. Perciò, La soluzione a questo è HDFS (sistema de archivos distribuido Hadoop).

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

Supporto Hadoop Architettura master-slave. È un tipo di sistema distribuito in cui viene eseguita l'elaborazione parallela dei dati. Hadoop è costituito da 1 Padrone e diversi schiavi.

Nodo de regla de nombre: – Per ogni blocco di dati memorizzato, ci sono 2 Copie presenti. Uno su diversi nodi di dati e una seconda copia su un altro nodo di dati. così, Risolve il problema della tolleranza ai guasti.

Il nodo del nome contiene le seguenti informazioni: –

1) Informazioni sui metadati per i file archiviati nei nodi di dati. I metadati sono costituiti da 2 record: FsImage e EditLogs. FsImage è costituito dallo stato completo del file system dall'inizio del nodo Name. Gli editlog contengono le modifiche recenti apportate al file system.

2) Posizione del blocco di file memorizzato nel nodo dati.

3) Dimensioni dei file.

Il nodo dati contiene i dati effettivi.

Perciò, Supporti HDFS l'integrità dei dati. I dati memorizzati vengono verificati se sono corretti o meno confrontando i dati con il loro checksum. Se vengono rilevati guasti, Il nodo del nome è informato. Perciò, Crea copie aggiuntive degli stessi dati ed elimina le copie danneggiate.

HDFS è costituito da Nodo del nome secondario che funziona contemporaneamente al nodo principale del nome come demone ausiliario. Non è un nodo del nome di backup. Legge costantemente tutti i file system e i metadati della RAM dal nodo del nome al disco rigido. È responsabile della combinazione di EditLogs con FSImage di Name Node.

Perciò, HDFS è come un archivio dati in cui possiamo scaricare qualsiasi tipo di dati. El procesamiento de estos datos requiere herramientas de Hadoop como Alveare (per la gestione dei dati strutturati), HBase (per la gestione di dati non strutturati), eccetera. Hadoop supporta il concetto “Scrivi una volta, Pronto per molti”.

Quindi, Facciamo un esempio e capiamo come possiamo elaborare un'enorme quantità di dati ed eseguire molte trasformazioni utilizzando Scala Language.

UN) Configurazione dell'IDE di Eclipse con le impostazioni di Scala.

Link per scaricare l'IDE eclipse – https://www.eclipse.org/downloads/

È necessario scaricare l'IDE Eclipse tenendo presente i requisiti del computer. Quando si avvia l'IDE eclipse, Vedrai questo tipo di schermo.

44693eclipse_1-5536478

Vai a Aiuto -> Eclipse Marketplace -> Cercare -> Scala-ide -> Installa su PC

34897scala-5206914

Dopodiché nell'IDE di Eclipse – Selezionare Prospettiva aperta -> Scala, Otterrai tutti i componenti SCALA nell'IDE da utilizzare.

32272open20perspective-2951911

Crea un nuovo progetto in eclipse e aggiorna il file pom con i seguenti passaggi:https://medium.com/@manojkumardhakad/how-to-create-maven-project-for-spark-and-scala-in-scala-ide-1a97ac003883

Modificare la versione della libreria scala facendo clic con il pulsante destro del mouse su Progetto -> Costruisci una strada -> Configurare il percorso di compilazione.

Aggiorna il progetto facendo clic con il pulsante destro del mouse su Progetto -> Intenditore -> Aggiorna progetto Maven -> Forza l'aggiornamento dello snapshot / versioni. Perciò, Il file POM viene salvato e tutte le dipendenze richieste vengono scaricate per il progetto.

Successivamente, scarica la versione Spark con Hadoop winutils posizionato nel percorso bin. Segui questo percorso per completare la configurazione: https://stackoverflow.com/questions/25481325/how-to-set-up-spark-on-windows

B) Creazione di sessioni Spark – 2 tipi.

Spark Session è il punto di ingresso o l'inizio per creare RDD, Frame di dati, Dataset. Per creare un'app Spark, primero necesitamos una sessione de chispa.

Spark Session può essere 2 tipi: –

un) Sessione Spark normale: –

13880Spark-Session201-4656380

L'output verrà visualizzato come: –

24326Spark20Session20Created-4506853

B) Sessione Spark per l'ambiente Hive: –

Per creare un ambiente hive su larga scala, Abbiamo bisogno della stessa sessione di scintilla con una linea aggiuntiva aggiunta. enableHiveSupport () – abilitare il supporto Hive, inclusa la connettività al metastore Hive persistente, supporto per le funzioni Hive serdes e Hive definite dall'utente.

52138Hive20Support-5582673

C) Creación de RDD (Dataset distribuito resiliente) e trasformazione di RDD in DataFrame: –

Quindi, dopo il primo passaggio della creazione di Spark-Session, siamo liberi di creare RDD, Set di dati o frame di dati. Queste sono le strutture dati in cui possiamo archiviare grandi quantità di dati..

Elastico:- significa tolleranza ai guasti in modo che possano ricalcolare le partizioni mancanti o danneggiate a causa di errori dei nodi.

Partizionato:- significa che i dati sono distribuiti su più nodi (Potere del parallelismo).

Set di dati: – Dati che possono essere caricati esternamente e che possono essere in qualsiasi forma, vale a dire, JSON, CSV o file di testo.

Le caratteristiche degli RDD includono: –

un) Calcolo in memoria: – Dopo aver eseguito trasformazioni sui dati, i risultati vengono memorizzati nella RAM anziché su un disco. Perciò, RDD non può utilizzare set di dati di grandi dimensioni. La soluzione a questo è, invece di usare RDD, l'uso di DataFrame è considerato / Dataset.

B) Valutazioni pigre: – Significa che le azioni delle trasformazioni eseguite vengono valutate solo quando il valore è necessario.

39080Caratteristiche-di-rdd-in-Spark202-6810382

C) Tolleranza ai guasti: – Gli RDD Spark sono tolleranti ai guasti in quanto tengono traccia delle informazioni di derivazione dei dati per ricostruire automaticamente i dati persi in caso di guasto.

D) Immutabilità: – Dati immutabili (non modificabile) Sono sempre sicuri da condividere su più processi. Possiamo ricreare l'RDD in qualsiasi momento.

me) Frazionamento: – Significa dividere i dati, Quindi ogni partizione può essere eseguita da nodi diversi, In questo modo l'elaborazione dei dati diventa più veloce.

F) Persistenza:- Gli utenti possono scegliere quali RDD devono utilizzare e scegliere una strategia di archiviazione per loro.

grammo) Operazioni a grana grossa: – Significa che quando i dati vengono suddivisi in cluster diversi per operazioni diverse, podemos aplicar transformaciones una vez para todo el grappolo y no para diferentes particiones por separado.

D) Utilizzo del framework di dati ed esecuzione di trasformazioni: –

Durante la conversione di RDD in frame di dati, deve aggiungere Importazione spark.implicits._ Dopo la scintilla sessione.

Il framework di dati può essere creato in molti modi. Diamo un'occhiata alle diverse trasformazioni che possono essere applicate al frame di dati.

passo 1:- Creazione di un framework di dati: –

571491-7081897

passo 2:- Esecuzione di diversi tipi di trasformazioni in un frame di dati: –

un) Si prega di selezionare:- Seleziona le colonne obbligatorie del frame di dati richieste dall'utente.

Input1.select (“arrg_id”, “da_proc_id”). Spettacolo ()

39981seleziona-9988946

B) selectExpr: – Selezionare le colonne richieste e rinominare le colonne.

Input2.selectExpr (“arrg_id11”, “prd_src_sys_id11 come prd_src_new”, “da_proc_id11”). Spettacolo ()

99377selectexp-1320093

C) con Colonna: – withColumns ayuda a agregar una nueva columna con el valor particular que el usuario desea en el marco de datos seleccionado.

Input1.withColumn (“New_col”, illuminato (nullo))

36560withcolumn-5137029

D) withColumnRenamed: – Cambia el nombre de las columnas del marco de datos particular que requiere el usuario.

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

88744withcolumn20renamed-9628908

me) far cadere:- Elimina las columnas que el usuario no quiere.

Input2.drop (“arrg_id11 ″,” prd_src_sys_id11 ″, “da_proc_id11”)

46048drop-8664125

F) Per entrare:- Une 2 marcos de datos junto con claves de unión de ambos marcos de datos.

Input1.join (Input2, Input1.col (“arrg_id”) === Input2.col (“arrg_id11 ″),” Giusto “)

.conColonna (“prd_src_sys_id”, illuminato (nullo))

94582join-3084600

grammo) Funciones agregadas:- Algunas de las funciones agregadas incluyen

* Raccontare:- Da el recuento de una columna en particular o el recuento del marco de datos como un todo.

println (Input1.count ())

42627count-9386655

* Máx .: – Da el valor máximo de la columna según una condición particular.

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

93270max-5414698

* Min: – Da un valor mínimo de la columna del marco de datos.

83162min-5753036

h) filtro: – Filtra las columnas de un marco de datos ejecutando una condición particular.

58433filter-2863035

io) printSchema: – Proporciona detalles como nombres de columna, tipos de datos de columnas y si las columnas pueden ser anulables o no.

99549printschema-6469355

J) Unione: – Combina los valores de 2 marcos de datos siempre que los nombres de columna de ambos marcos de datos sean iguales.

85162union-9027829

ME) Alveare:-

Hive es una de las bases de datos más utilizadas en Big Data. Es una especie de Banca dati relacional donde los datos se almacenan en formato tabular. La base de datos predeterminada de la colmena es la Derby. Procesos de colmena estructurado y semiestructurado dati. En caso de datos no estructurados, primero cree una tabla en la colmena y cargue los datos en la tabla, así estructurada. Hive admite todos los tipos de datos primitivos de SQL.

Hive admite 2 tipos de tablas: –

un) Tavoli gestiti: – Es la tabla predeterminada en Hive. Cuando el usuario crea una tabla en Hive sin especificarla como externa, per impostazione predefinita, se crea una tabla interna en una ubicación específica en HDFS.

Per impostazione predefinita, se creará una tabla interna en una ruta de carpeta similar a / Nome utente / alveare / scorta directorio de HDFS. Podemos anular la ubicación predeterminada por la propiedad de ubicación durante la creación de la tabla.

Si descartamos la tabla o partición administrada, los datos de la tabla y los metadatos asociados con esa tabla se eliminarán del HDFS.

B) Mesa externa: – Las tablas externas se almacenan fuera del directorio del almacén. Pueden acceder a los datos almacenados en fuentes como ubicaciones HDFS remotas o volúmenes de almacenamiento de Azure.

Siempre que dejamos caer la tabla externa, solo se eliminarán los metadatos asociados con la tabla, los datos de la tabla permanecen intactos por Hive.

Podemos crear la tabla externa especificando el EXTERNO palabra clave en la instrucción de tabla de creación de Hive.

Comando para crear una tabla externa.

94763create20table-7512342

Comando para comprobar si la tabla creada es externa o no: –

desc con formato

46379desc20formatted-8577196

F) Creando un entorno de colmena en scala eclipse: –

passo 1: – Añadiendo dependencia de maven de colmena al archivo pom del eclipse.

81007hive20dependency-4174738

passo 2:- Añadiendo Spark-Session con enableHiveSupport al generador de sesiones.

passo 3:- Comando para crear base de datos

Spark.sqlContext.sql (“” ”crear base de datos gfrrtnsg_staging“ ””)

Este comando cuando se ejecuta crea una base de datos en el directorio de colmena del sistema local.

83828jidnasa_database-9918764

passo 4:- Comando para crear una tabla en eclipse

La ejecución de este comando crea una tabla en la carpeta de la base de datos en el directorio local.

30664hive1-3942431

Después de crear una tabla, obtendrá una tabla creada dentro de la carpeta de la base de datos en su sistema informático.

23497jidnasa_table-5602946

passo 5: – Carga de datos en tablas: –

spark.sqlContext.sql (“” ”CARGAR DATOS ENTRADA ‘C: sampledata SOBRESCRIBIR EN TABLA frzn_arrg_link“ ””)

77667jidnasa_inside_table-5068983

Al ejecutar este comando, los datos se cargan en tablas y, così, dan la salida anterior.

Perciò, de esta manera los datos se pueden almacenar en tablas de colmena y cargar en marcos de datos y ejecutar sus programas.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.