Spark samles

Spark samles
Big Data -prosessering er et hett tema i den tekniske verden. Det er et stort antall biblioteker og rammer som brukes til regelmessig big databehandling. Vi vil diskutere ett rammeverk, Apache Spark, som er en databehandlingsmotor for massivt distribuerte data. Vi vil også diskutere en av de populære metodene, Spark Coalesce, som brukes til å redusere partisjonene i datasettet, sammen med eksemplet.

Hva er Apache Spark?

Apache Spark er et gratis og åpen kildekode-databehandlingsverktøy som bruker grunnleggende programmeringsstrukturer for å vedvare og analysere data i sanntid på tvers av flere klynger av datamaskiner.

Spark begynte som et Amplab -eksperiment ved UC Berkeley i 2009. Det er en del av BSD -lisensen som blir utgitt i 2010. Spark ble et Apache -prosjekt i 2013. I 2014 oppnådde Databricks en ny verdensrekord ved å sortere store datasett med Spark. Spark støtter forskjellige programmeringsspråk som R, Python, Java og Scala og er 100 ganger raskere enn MapReduce i behandlingen av dataene siden det gjøres i minnet. Den inneholder færre kodelinjer, og for autentisering bruker den en delt kode. Det kan også fungere på garn, og dra nytte av Kerberos 'evner. Det er basert på Hadoop MapReduce og utvider MapReduce -konseptet for å bruke de nye beregningstypene effektivt.

Sparks primære fordel i forhold til Hadoop bruker en behandlingsarkitektur i minnet. For å bruke den distribuerte replikasjonslagringen, kan Spark operere på toppen av HDFS. Spark kan brukes i samme Hadoop -klynge som MapReduce eller som et frittstående prosesseringsrammeverk. Garn kan også kjøre Spark -applikasjoner. I stedet for å bruke et lokalt minneplass for beregning, bruker Spark en databehandling, slik at brukere kan behandle dataene i RAM og hente dem raskt. Spark er ikke ment å erstatte Hadoop; det kan betraktes som et kompliment.

MapReduce og Spark brukes i tandem: MapReduce håndterer batchbehandling mens Spark håndterer sanntidsbehandling. Spark-koden kan gjenbrukes for batchbehandling, sammenføyning av strømmer mot historiske data og gjøre ad-hoc-spørsmål på strømstilstanden. Spark inkluderer streaming av dataverktøy, interaktive/deklarative søk, maskinlæring, samt kart og redusere.

Hva er Spark Coalesce -metoden?

Coalesce -metoden brukes til å senke antall partisjoner i datasettet. Coalesce unngår full blanding ved å blande dataene ved hjelp av hash -partisjonæren (standard) og justeres til de eksisterende partisjonene i stedet for å generere nye. Dette betyr at det bare kan redusere antall partisjoner. I Spark SQL, samles Regelmessig metode er en ikke-aggregatmetode. For å redusere mengden av dataene som er flyttet, bruker Coalesce eksisterende divisjoner. Hvis alle kolonnene er null, returnerer coalesce den første ikke-nullverdien. Coalesce er raskere enn Repartition fordi den unngår hele blandingen, mens repartisjon gjør en full stokking, noe som er tidkrevende og dyrt. Minst en kolonne er nødvendig for koalescensen, og alle kolonnene må være av samme eller kompatible typer.

Eksempel på å bruke coalesce -metoden

For å teste Spark Coalesce -funksjonen, bruk følgende kommando:

TESTDF = SQLCONTEXT.CreateTataFrame ([(1,1), (2,2), (ingen, 3), (4, ingen)], ["id", "verdi"])
+----+------+
| ID | Verdi |
+----+------+
| 1 | 1 |
| 2 | 2 |
| null | 3 |
| 4 | null |
+----+------+

Importer de nødvendige PySpark -funksjonene ved å bruke følgende kommando:

Fra Pyspark.SQL.typer importerer floattype

Fra Pyspark.SQL.Funksjoner importerer *

For å opprette en ny kolonne med ikke-nullverdier, bruk følgende kommando:

tmp = testdf.WithColumn ('Col', Coalesce (Testdf ['Id'], Testdf ['Value']))
tmp.forestilling()
+----+------+---------+
| Id | Verdi | Col |
+----+------+---------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| null | 3 | 3 |
| 4 | null | 4 |
+----+------+---------+

Konklusjon

Vi diskuterte om Apache Spark, Spark SQL og Spark SQL Coalesce -metoden. Vi lærte at det kan brukes til å redusere partisjonene i datarammen, sammen med ett eksempel. Vi innså også at Coalesce -metoden bare kan brukes til å redusere antall partisjoner mens partisjonering kan brukes til å redusere eller øke partisjonene.