Što su naredbe iskre iskre?

Spark shell interfejs se koristi za pisanje adhoc upita za rad i razumijevanje ponašanja Apache Spark. Zove se motor s klasterskim računanjem otvorenog koda koji može obavljati obradu podataka u memoriji kao što je analitika, ETL, strojno učenje za ogromne skupove podataka. U ovoj ćemo temi saznati više o naredbama iskričavih ljuska.

Na primjer, postoje različite vrste ljuske iskre za različite programske jezike:

  1. iskre ljuska napisana je u Scali
  2. pyspark je u Python i
  3. sparkR za R jezik

Čovjek može razviti svoju samostalnu aplikaciju uz pomoć Sparka. Široko se koristi zbog svoje velike brze računske brzine. To je zato što koristi MapReduce za obradu različitih upita i transformacija.

Za pokretanje naredbi iskre-shell potrebno je da su Java i Scala već instalirani u sustavu.

Vrste naredbi iskre ljuske

Različite vrste Spark-shell naredbi su sljedeće:

1. Da biste provjerili je li instalirana varnica i znate li njezinu verziju, koristi se dolje naredba (sve naredbe u nastavku bit će označene počevši s ovim simbolom "$")

$ iskre ljuske

Ako je varnica instalirana, prikazuje se sljedeći izlaz:

$ iskre ljuske

SPARK_MAJOR_VERSION je postavljen na 2, koristeći Spark2

Postavljanje zadane razine zapisa na "UPOZORENJE".

Za podešavanje razine bilježenja koristite sc.setLogLevel (newLevel). Za SparkR koristite setLogLevel (newLevel).

Web sučelje iskre za kontekst dostupno na http://10.113.59.34:4040

Kontekst iskre dostupan je kao "sc" (master = local (*), id aplikacije = local-1568732886588).

Sesija iskre dostupna je kao "iskre".

Dobrodošli u

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Korištenje Scala verzije 2.11.8 (Java HotSpot (TM) 64-bitni poslužitelj VM, Java 1.8.0_112)

Unesite izraze za ocjenu.

Upišite: pomoć za više informacija.

Scala>

2. Osnovna struktura podataka Sparka naziva se RDD (Resilient Distributed skupovi podataka) koji sadrži nepromjenjivu zbirku objekata za raspodijeljeno računanje zapisa. Svi skupovi podataka RDD-a logički su podijeljeni na više čvorova klastera.

RDD se može stvoriti samo čitanjem s lokalnog datotečnog sustava ili transformacijom postojećeg RDD-a.

a) Za stvaranje novog RDD-a koristimo sljedeću naredbu:

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

Ovdje sc naziva objektom SparkContext.

Izlaz:

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

b) RDD se može stvoriti putem Parallelized Collection na sljedeći način:

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

Izlaz:

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

Izlaz:

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

c) Za izradu od postojećih RDD-ova :

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

Izlaz:

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

3. Postoje dvije vrste iskričenih RDD operacija koje se mogu izvoditi na kreiranim skupovima podataka:

  • akcije
  • transformacije

Radnje: koristi se za obavljanje određenih potrebnih operacija na postojećim skupovima podataka. Slijedi nekoliko naredbi pomoću kojih se u nastavku mogu stvoriti radnje na stvorenim skupovima podataka:

a) funkcija count () za brojanje broja elemenata u RDD:

scala> value.count()

Izlaz:

res3: Long = 5

b) funkcija prikupiti () za prikaz svih elemenata niza:

scala> value.collect()

Izlaz:

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

c) prva () funkcija koja se koristi za prikaz prvog elementa skupa podataka:

scala> value.first()

Izlaz:

res4: Int = 1

d) funkcija take (n) prikazuje prvih n elemenata niza:

scala> value.take(3)

Izlaz:

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

e) funkcija takeSample (withReplacement, num, (seed)) prikazuje slučajni niz elemenata „num” gdje je sjeme za generator slučajnih brojeva.

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

Izlaz:

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

f) funkcija saveAsTextFile (putanja) sprema skup podataka na navedenom putu mjesta hdfs

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

g) pregrade. funkcija dužine može se koristiti za pronalaženje broja particija u RDD-u

scala> value.partitions.length

Izlaz:

res1: Int = 8

RDD transformacije

Transformacija se koristi za stvaranje novog RDD-a od postojećih. Budući da su ulazi RDD-a nepromjenjivi, rezultat dobiven transformacijom može biti jedan ili više RDD-a kao izlaz.

Postoje dvije vrste transformacija:

  • Uske transformacije
  • Široke transformacije

Uske transformacije - svaki roditeljski RDD podijeljen je u različite particije i među njima će samo jedna particija koristiti podređeni RDD.

Primjer: map () i filter () su dvije osnovne vrste osnovnih transformacija koje se nazivaju kad se zove radnja.

  • map (func) funkcija djeluje na svaki od elemenata u skupu podataka "vrijednost" iterativno kako bi se proizveo izlazni RDD.

Primjer: U ovom primjeru dodamo vrijednost 10 svakom elementu vrijednosti skupa podataka i prikazuje transformirani izlaz pomoću funkcije sakupljanja.

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)

funkcija filter (func) se u osnovi koristi za filtriranje elemenata koji zadovoljavaju određeni uvjet naveden pomoću funkcije.

Primjer: U ovom primjeru pokušavamo dohvatiti sve elemente, osim broja 2, "vrijednost" skupa podataka i dohvatiti izlaz putem funkcije sakupljanja.

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)

Široke transformacije - Jedna roditeljska RDD particija dijeli se na više različitih podređenih RDD particija.

Primjer: groupbykey i RedubyKey su primjeri širokih transformacija.

  • groupbyKey funkcija grupira vrijednosti skupa podataka u parove ključ-vrijednost prema ključnim vrijednostima iz drugog RDD-a. Ovaj postupak uključuje miješanje koje se događa kada grupa po funkcijama prikuplja podatke povezane s određenim ključem i pohranjuje ih u jedan par ključ-vrijednost.

Primjer: U ovom primjeru dodjeljujemo cjelobrojne brojeve 5, 6 vrijednosti niza "ključ" i cijeli broj 8 dodijeljen "8" koji su prikazani u istom formatu para ključ-vrijednost na izlazu.

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))

  • funkcija reduByKey također kombinira parove ključ-vrijednost iz različitih RDD-ova. Kombinira ključeve i njihove vrijednosti u jedan element nakon što provede spomenutu transformaciju.

Primjer: U ovom primjeru, zajedničke tipke niza "slova" prvo se paraleliziraju s funkcijom i svako slovo se preslikava s brojem 10 do njega. ReduByKey će dodati vrijednosti s sličnim tipkama i sprema u varijablu value2. Izlaz se zatim prikazuje funkcijom sakupljanja.

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)

Uz gore spomenute radnje poput podjele na RDD i izvršavanja akcija / transformacija na njima, Spark također podržava keširanje koje je korisno kad se isti podaci pozivaju rekurzivno.

Uz pomoć svih ovih svojstava, Apache Spark može obraditi ogromne količine podataka i izvršiti serijsku obradu i strujnu obradu. Izračunavanje u memoriji koje je poduzeo Spark odgovoran je za izuzetno brzu obradu aplikacija. Zbog toga je Spark metoda „go-to“ zbog svoje svestranosti programiranja na različitim jezicima, jednostavnosti upotrebe i mogućnosti integracije.

Preporučeni članci

Ovo je vodič za naredbe iskričavih granata. Ovdje smo raspravljali o raznim vrstama naredbi za iskrenje ljuske za različite programske jezike. Možete pogledati i sljedeći članak da biste saznali više -

  1. Naredbe za skriptiranje granata
  2. Kako instalirati varnicu
  3. Spark Intervju Pitanja
  4. Iskrene naredbe
  5. Adhoc testiranje
  6. Generator slučajnih brojeva u JavaScript-u
  7. Vodič za popis naredbi Unix Shell
  8. PySpark SQL | Moduli i metode PySpark SQL
  9. Za petlju u skriptu s ljuskom | Kako petlja djeluje?
  10. Naredbe skupnog skripta s primjerima
  11. Kompletan pregled komponenti svjećica

Kategorija: