Hvad er gnistfaldskommandoer?

Spark shell er en grænseflade, der bruges til at skrive adhoc-forespørgsler til at arbejde og forstå opførelsen af ​​Apache Spark. Det kaldes cluster computing open source-motor, der kan udføre in-memory-behandling af data, såsom til analyse, ETL, maskinlæring til enorme datasæt. I dette emne skal vi lære om gnistfaldskommandoer.

Der er forskellige typer gnisterskal til forskellige programmeringssprog for eksempel:

  1. gnistskal er skrevet i Scala
  2. pyspark er i Python og
  3. gnist til R-sprog

Man kan udvikle sin uafhængige applikation ved hjælp af Spark. Det er vidt brugt på grund af dets superhurtige beregningshastighed. Dette skyldes, at det bruger MapReduce til at behandle forskellige forespørgsler og transformationer.

For at køre gnist-shell-kommandoer kræver det, at Java og Scala allerede er installeret i systemet.

Typer af gnistskal-kommandoer

De forskellige slags gnist-kommandoer er som følger:

1. For at kontrollere, om gnisten er installeret og at kende dens version, benyttes under kommando (Alle kommandoer i det følgende skal angives, startende med dette symbol "$")

$ gnistskal

Følgende output vises, hvis gnisten er installeret:

$ gnistskal

SPARK_MAJOR_VERSION er indstillet til 2 ved hjælp af Spark2

Indstilling af standardlogniveauet til “WARN”.

Brug sc.setLogLevel (newLevel) til at justere logniveauet. For SparkR skal du bruge setLogLevel (newLevel).

Gnistkontekst Web UI tilgængeligt på http://10.113.59.34:4040

Gnistkontekst tilgængelig som 'sc' (master = local (*), app-id = local-1568732886588).

Gnist session tilgængelig som 'gnist'.

Velkommen til

____ __

/ __ / __ ___ _____ / / __

_ \ \ / _ \ / _ `/ __ / '_ /

/ ___ / .__ / \ _, _ / _ / / _ / \ _ \ version 2.2.0.2.6.3.0-235

/ _ /

Brug af Scala version 2.11.8 (Java HotSpot (TM) 64-bit Server VM, Java 1.8.0_112)

Indtast udtryk for at få dem evalueret.

Type: hjælp for mere information.

scala>

2. Den grundlæggende datastruktur for Spark kaldes en RDD (Resilient Distribuerede Datasæt), der indeholder en uforanderlig samling af objekter til distribueret databehandling af poster. Alle datasæt for RDD er logisk fordelt på tværs af flere noder i en klynge.

En RDD kan kun oprettes ved at læse fra et lokalt filsystem eller ved at transformere en eksisterende RDD.

a) For at oprette en ny RDD bruger vi følgende kommando:

scala> val examplefile = sc.textFile("file.txt")

Her kaldes sc genstand for SparkContext.

Produktion:

examplefile: org.apache.spark.rdd.RDD(String) = file.txt MapPartitionsRDD(3) at textFile at :24

b) En RDD kan oprettes gennem Parallelized Collection som følger:

scala> val oddnum = Array(1, 3, 5, 7, 9)

Produktion:

oddnum: Array(Int) = Array(1, 3, 5, 7, 9)
scala> val value = sc.parallelize(oddnum)

Produktion:

value: org.apache.spark.rdd.RDD(Int) = ParallelCollectionRDD(4) at parallelize at :26

c) Sådan opretter du fra eksisterende RDD'er :

scala> val newRDD = oddnum.map(value => (value * 2))

Produktion:

newRDD: Array(Int) = Array(2, 6, 10, 14, 18)

3. Der er to typer Spark RDD-operationer, der kan udføres på de oprettede datasæt:

  • Handlinger
  • Transformations

Handlinger: Det bruges til at udføre visse nødvendige handlinger på de eksisterende datasæt. Følgende er et par af de kommandoer, der kan bruges til at udføre nedenstående handlinger på de oprettede datasæt:

a) count () -funktion til at tælle antallet af elementer i RDD:

scala> value.count()

Produktion:

res3: Long = 5

b) samle () -funktion for at vise alle elementerne i matrixen:

scala> value.collect()

Produktion:

res5: Array(Int) = Array(1, 3, 5, 7, 9)

c) første () -funktion, der bruges til at vise det første element i datasættet:

scala> value.first()

Produktion:

res4: Int = 1

d) funktionen take (n) viser de første n elementer i matrixen:

scala> value.take(3)

Produktion:

res6: Array(Int) = Array(1, 3, 5)

e) takeSample (withReplacement, num, (seed)) -funktionen viser et tilfældigt array af “num” -elementer, hvor frøet er til generatoren til tilfældigt tal.

scala> value.takeSample(false, 3, System.nanoTime.toInt)

Produktion:

res8: Array(Int) = Array(3, 1, 7)

f) saveAsTextFile (sti) -funktion gemmer datasættet i den specificerede sti på hdfs placering

scala> value.saveAsTextFile("/user/valuedir")

g) partitioner. længde funktion kan bruges til at finde antallet af partitioner i RDD

scala> value.partitions.length

Produktion:

res1: Int = 8

RDD Transformationer

Transformation bruges til at danne en ny RDD fra de eksisterende. Da inputene fra RDD er uforanderlige, kan resultatet dannet ved transformation være en eller flere RDD som output.

Der er to typer transformationer:

  • Smalle transformationer
  • Brede transformationer

Smalle transformationer - Hver forælder RDD er opdelt i forskellige partitioner, og blandt disse vil kun en partition blive brugt af barnet RDD.

Eksempel: kort () og filter () er de to grundlæggende slags grundtransformationer, der kaldes, når der kaldes en handling.

  • map (func) -funktion fungerer på hvert af elementerne i datasættet "værdi" iterativt for at producere output RDD.

Eksempel: I dette eksempel tilføjer vi værdien 10 til hvert af elementerne i datasætværdien og viser det transformerede output ved hjælp af indsamlingsfunktion.

scala> val mapfunc = value.map(x => x+10)
mapfunc: org.apache.spark.rdd.RDD(Int) = MapPartitionsRDD(3) at map at :28

scala> mapfunc.collect
res2: Array(Int) = Array(11, 13, 15, 17, 19)

filter (func) -funktion bruges dybest set til at filtrere de elementer, der opfylder en bestemt betingelse specificeret ved hjælp af funktionen.

Eksempel: I dette eksempel forsøger vi at hente alle elementerne undtagen nummer 2 i datasættets "værdi" og hente output via indsamlingsfunktionen.

scala> val fill = value.filter(x => x!=2)
fill: org.apache.spark.rdd.RDD(Int) = MapPartitionsRDD(7) at filter at :28

scala> fill.collect
res8: Array(Int) = Array(4, 6, 8, 10)

Bred transformation - En RDD-partition med en enkelt forælder deles på dens forskellige RDD-partitioner med flere børn.

Eksempel: gruppetast og reduktionskode er eksempler på brede transformationer.

  • groupbyKey-funktionen grupperer datasætværdierne i nøgleværdipar i henhold til nøgleværdierne fra en anden RDD. Denne proces involverer blanding at finde sted, når gruppen efter funktion indsamler dataene, der er knyttet til en bestemt nøgle og gemmer dem i et enkelt nøgleværdipar.

Eksempel: I dette eksempel tildeler vi heltalene 5, 6 til strengværdien "nøgle" og heltal 8 tildelt "8" som vises i det samme nøgleværdiparformat i output.

scala> val data = spark.sparkContext.parallelize(Array(("key", 5), ("val", 8), ("key", 6)), 3)
data: org.apache.spark.rdd.RDD((String, Int)) = ParallelCollectionRDD(13) at parallelize at :23

scala> val group = data.groupByKey().collect()
group: Array((String, Iterable(Int))) = Array((key, CompactBuffer(5, 6)), (val, CompactBuffer(8)))

scala> group.foreach(println)
(key, CompactBuffer(5, 6))
(val, CompactBuffer(8))

  • reducByKey-funktion kombinerer også nøgleværdipar fra forskellige RDD'er. Det kombinerer nøglerne og deres respektive værdier i et enkelt element efter udførelse af den nævnte transformation.

Eksempel: I dette eksempel paralleliseres de almindelige taster for arrayet “bogstaver” først af funktionen, og hvert bogstav kortlægges med tælling 10 til det. The reducByKey tilføjer værdier, der har lignende taster og gemmer i den variable værdi2. Udgangen vises derefter ved hjælp af indsamlingsfunktionen.

scala> val letters = Array("A", "B", "C", "D", "B", "C", "E", "D")
letters: Array(String) = Array(A, B, C, D, B, C, E, D)

scala> val value2 = spark.sparkContext.parallelize(letters).map(w => (w, 10)).reduceByKey(_+_)
value2: org.apache.spark.rdd.RDD((String, Int)) = ShuffledRDD(20) at reduceByKey at :25

scala> value2.foreach(println)
(C, 20)
(E, 10)
(D, 20)
(B, 20)
(A, 10)

Sammen med de ovennævnte handlinger som partitionering til RDD og udførelse af handlinger / transformationer på dem, understøtter Spark også cache, hvilket er nyttigt, hvor de samme data kaldes rekursivt.

Ved hjælp af alle disse egenskaber kan Apache Spark behandle store mængder data og udføre batch-behandling og streaming-behandling. Den i hukommelse beregning udført af Spark er ansvarlig for den ekstremt hurtige behandling af applikationer. Derfor er Spark go-to-metoden på grund af dens alsidighed i programmering på forskellige sprog, brugervenlighed og integrationskapaciteter.

Anbefalede artikler

Dette er en guide til Spark Shell-kommandoer. Her diskuterer vi forskellige typer gnistskal-kommandoer til forskellige programmeringssprog. Du kan også se på den følgende artikel for at lære mere -

  1. Shell-scripting-kommandoer
  2. Sådan installeres gnist
  3. Spark Interview Spørgsmål
  4. Gnistkommandoer
  5. Adhoc-test
  6. Tilfældig nummergenerator i JavaScript
  7. Vejledning til listen over Unix Shell-kommandoer
  8. PySpark SQL | Moduler og metoder til PySpark SQL
  9. Til loop i Shell-scripting | Hvordan fungerer loop?
  10. Batch scripting-kommandoer med eksempler
  11. Komplet oversigt over gnistkomponenter

Kategori: