Hva er gnistskjellkommandoer?

Spark shell er et grensesnitt som brukes til å skrive adhoc-spørsmål for å arbeide og forstå oppførselen til Apache Spark. Det kalles cluster computing open source-motoren som kan utføre prosessering i data som minne, ETL, maskinlæring for enorme datasett. I dette emnet skal vi lære om Spark Shell-kommandoer.

Det finnes forskjellige typer gnisterskall for forskjellige programmeringsspråk, for eksempel:

  1. gnistskall er skrevet på Scala
  2. pyspark ligger i Python og
  3. gnist for R-språk

Man kan utvikle sin frittstående applikasjon ved hjelp av Spark. Det er mye brukt på grunn av sin supersnelle beregningshastighet. Dette er fordi den bruker MapReduce til å behandle forskjellige spørsmål og transformasjoner.

For å kjøre gnist-shell-kommandoer, krever det at Java og Scala allerede er installert i systemet.

Typer av tennskjellkommandoer

De forskjellige typer gnistkommandoer er som følger:

1. For å sjekke om gnisten er installert og å kjenne dens versjon, under kommando, brukes (Alle kommandoer heretter skal vises med dette symbolet "$")

$ gnist-skall

Følgende utgang vises hvis gnisten er installert:

$ gnist-skall

SPARK_MAJOR_VERSION er satt til 2 ved å bruke Spark2

Setter standard loggnivå til “WARN”.

For å justere loggingsnivået bruker du sc.setLogLevel (newLevel). For SparkR, bruk setLogLevel (newLevel).

Gnistkontekst Web UI tilgjengelig på http://10.113.59.34:4040

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

Gnistøkt tilgjengelig som "gnist".

Velkommen til

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Bruker Scala versjon 2.11.8 (Java HotSpot (TM) 64-bit Server VM, Java 1.8.0_112)

Skriv inn uttrykk for å få dem evaluert.

Type: hjelp for mer informasjon.

scala>

2. Den grunnleggende datastrukturen til Spark kalles en RDD (Resilient Distribuerte Datasett) som inneholder en uforanderlig samling av objekter for distribuert databehandling av poster. Alle datasettene til RDD er logisk fordelt på flere noder i en klynge.

En RDD kan bare opprettes ved å lese fra et lokalt filsystem eller ved å transformere en eksisterende RDD.

a) For å opprette en ny RDD bruker vi følgende kommando:

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

Her kalles sc objektet til SparkContext.

Produksjon:

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

b) En RDD kan opprettes gjennom Parallelized Collection som følger:

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

Produksjon:

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

Produksjon:

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

c) Slik lager du fra eksisterende RDD-er :

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

Produksjon:

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

3. Det er to typer Spark RDD-operasjoner som kan utføres på de opprettede datasettene:

  • handlinger
  • trans~~POS=TRUNC

Handlinger: Den brukes til å utføre visse nødvendige operasjoner på de eksisterende datasettene. Følgende er noen av kommandoene som kan brukes til å utføre handlingene nedenfor på de opprettede datasettene:

a) count () -funksjon for å telle antall elementer i RDD:

scala> value.count()

Produksjon:

res3: Long = 5

b) samle () -funksjon for å vise alle elementene i matrisen:

scala> value.collect()

Produksjon:

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

c) first () -funksjonen som brukes til å vise det første elementet i datasettet:

scala> value.first()

Produksjon:

res4: Int = 1

d) take (n) -funksjonen viser de første n elementene i matrisen:

scala> value.take(3)

Produksjon:

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

e) takeSample (withReplacement, num, (seed)) -funksjonen viser en tilfeldig rekke "num" -elementer der frøet er for generatoren for tilfeldig tall.

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

Produksjon:

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

f) saveAsTextFile (banen) -funksjonen lagrer datasettet i den spesifiserte banen til hdfs-plassering

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

g) partisjoner. lengdefunksjon kan brukes til å finne antall partisjoner i RDD

scala> value.partitions.length

Produksjon:

res1: Int = 8

RDD Transformations

Transformasjon brukes til å danne en ny RDD fra de eksisterende. Siden inngangene til RDD er uforanderlige, kan resultatet dannet ved transformasjon være en eller flere RDD som utgang.

Det er to typer transformasjoner:

  • Smale transformasjoner
  • Brede transformasjoner

Smale transformasjoner - Hver forelder RDD er delt inn i forskjellige partisjoner, og blant disse vil bare en partisjon brukes av barnet RDD.

Eksempel: kart () og filter () er de to grunnleggende typer grunntransformasjoner som kalles når en handling blir kalt.

  • map (func) -funksjonen fungerer på hvert av elementene i datasettet "verdi" iterativt for å produsere output RDD.

Eksempel: I dette eksemplet legger vi verdien 10 til hvert av elementene i datasettverdien og viser den transformerte utgangen ved hjelp av samlefunksjon.

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) -funksjon brukes i utgangspunktet til å filtrere ut elementene som tilfredsstiller en spesiell betingelse som er spesifisert ved bruk av funksjonen.

Eksempel: I dette eksemplet prøver vi å hente alle elementene bortsett fra nummer 2 i datasettet "verdi" og hente utdataene via samlefunksjonen.

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)

Brede transformasjoner - En enkelt foreldre RDD-partisjon deles på de forskjellige RDD-partisjonene med flere barn.

Eksempel: gruppetast og reduksjonsnøkkel er eksempler på store transformasjoner.

  • groupbyKey-funksjonen grupperer datasettverdiene i nøkkelverdipar i henhold til nøkkelverdiene fra en annen RDD. Denne prosessen innebærer shuffling for å finne sted når gruppen etter funksjon samler inn dataene som er knyttet til en bestemt nøkkel og lagrer dem i et enkelt nøkkelverdipar.

Eksempel: I dette eksemplet tilordner vi heltalene 5, 6 til strengverdien "nøkkel" og heltall 8 tilordnet "8" som vises i det samme nøkkelverdiparformatet i utdataene.

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-funksjonen kombinerer også nøkkelverdipar fra forskjellige RDD-er. Den kombinerer nøklene og deres respektive verdier til et enkelt element etter å ha utført den omtalte transformasjonen.

Eksempel: I dette eksemplet blir de vanlige tastene til matrisen “bokstaver” først parallellisert av funksjonen, og hver bokstav blir kartlagt med telling 10 til den. Reduksjonsboken vil legge til verdiene som har lignende taster og lagrer i variabelen verdi2. Utgangen vises deretter ved bruk av samlefunksjonen.

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 ovennevnte handlingene som partisjonering til RDD og utførelse av handlinger / transformasjoner på dem, støtter Spark også hurtigbufring som er nyttig der de samme dataene kalles rekursivt.

Ved hjelp av alle disse egenskapene kan Apache Spark behandle store datamengder og utføre batch-prosessering og streaming-prosessering. Beregningen i minne som er gjort av Spark, er ansvarlig for ekstremt rask behandling av applikasjoner. Derfor er Spark go-to-metoden på grunn av sin allsidighet med programmering på forskjellige språk, brukervennlighet og integrasjonsfunksjoner.

Anbefalte artikler

Dette er en guide til Spark Shell-kommandoer. Her diskuterer vi forskjellige typer gnistskjellkommandoer for forskjellige programmeringsspråk. Du kan også se på følgende artikkel for å lære mer -

  1. Shell-kommandoer
  2. Hvordan installere gnist
  3. Spark Interview Questions
  4. Gnistkommandoer
  5. Adhoc-testing
  6. Tilfeldig nummergenerator i JavaScript
  7. Veiledning til listen over Unix Shell-kommandoer
  8. PySpark SQL | Moduler og metoder for PySpark SQL
  9. For Loop in Shell Scripting | Hvordan for loop fungerer?
  10. Batch scripting-kommandoer med eksempler
  11. Komplett oversikt over gnistkomponenter

Kategori: