Kaj so ukazi iskre Shell?

Spark shell je vmesnik, ki se uporablja za pisanje adhoc poizvedb za delo in razumevanje obnašanja Apache Spark. Imenujemo ga grozdni računalnik z odprtokodnim motorjem, ki lahko opravi v pomnilniku obdelavo podatkov, na primer za analitiko, ETL, strojno učenje za ogromne naloge podatkov. V tej temi bomo spoznali ukaze iskrivih lupin.

Na primer obstajajo različne vrste lupine Spark za različne programske jezike:

  1. iskra-lupina je napisana v Scali
  2. pyspark je v Python in
  3. sparkR za R jezik

Nekdo lahko razvije svojo samostojno aplikacijo s pomočjo Spark. Široko se uporablja zaradi svoje zelo visoke računske hitrosti. To je zato, ker uporablja MapReduce za obdelavo različnih poizvedb in preobrazb.

Za izvajanje ukazov iskalne lupine zahtevata, da sta v sistemu že nameščena Java in Scala.

Vrste ukazov iskrive lupine

Različni ukazi iskre-lupine so naslednji:

1. Če želite preveriti, ali je iskrica nameščena, in poznati njeno različico, se spodaj uporablja ukaz (Vsi ukazi so v nadaljevanju navedeni s simbolom "$")

$ iskre lupine

Če je nameščena iskra, se prikaže naslednji izhod:

$ iskre lupine

SPARK_MAJOR_VERSION je z uporabo Spark2 nastavljen na 2

Nastavitev privzete ravni dnevnika na "OPOZORI".

Za prilagoditev ravni beleženja uporabite sc.setLogLevel (newLevel). Za SparkR uporabite setLogLevel (newLevel).

Spletni uporabniški vmesnik iskric je na voljo na naslovu http://10.113.59.34:4040

Kontekst iskric je na voljo kot 'sc' (glavni = lokalni (*), id aplikacije = local-1568732886588).

Seja iskre je na voljo kot "iskra".

Dobrodošli v

____ __

/ __ / __ ___ _____ / / __

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

/ ___ / .__ / \ _, _ / _ / / _ / \ _ \ različica 2.2.0.2.6.3.0-235

/ _ /

Uporaba Scala različice 2.11.8 (Java HotSpot (TM) 64-bitni strežnik VM, Java 1.8.0_112)

Vnesite izraze, da jih ocenite.

Vnesite: pomoč za več informacij.

skala>

2. Osnovna struktura podatkov Spark se imenuje RDD (Resilient Distributed Dataset), ki vsebuje nespremenljivo zbirko predmetov za porazdeljeno računanje zapisov. Vse podatkovne skupine RDD so logično razdeljene na več vozlišč grozda.

RDD lahko ustvarite samo z branjem iz lokalnega datotečnega sistema ali s preoblikovanjem obstoječega RDD.

a) Za ustvarjanje novega RDD uporabimo naslednji ukaz:

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

Tu se sc imenuje objekt SparkContext.

Izhod:

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

b) RDD se lahko ustvari s Parallelized Collection na naslednji način:

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

Izhod:

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

Izhod:

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

c) Če želite ustvariti iz obstoječih RDD :

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

Izhod:

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

3. Obstajajo dve vrsti operacij RDD Spark, ki se lahko izvajajo na ustvarjenih naborih podatkov:

  • Dejanja
  • Transformacije

Dejanja: Uporablja se za izvajanje nekaterih potrebnih operacij na obstoječih naborih podatkov. Sledi nekaj ukazov, s katerimi lahko spodaj izvedete dejanja na ustvarjenih naborih podatkov:

a) funkcija count () za štetje elementov v RDD:

scala> value.count()

Izhod:

res3: Long = 5

b) funkcija zbiranja () za prikaz vseh elementov matrike:

scala> value.collect()

Izhod:

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

c) prva () funkcija, ki se uporablja za prikaz prvega elementa nabora podatkov:

scala> value.first()

Izhod:

res4: Int = 1

d) funkcija take (n) prikaže prvih n elementov matrike:

scala> value.take(3)

Izhod:

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

e) funkcija takeSample (withReplacement, num, (seed)) prikaže naključni niz elementov „num“, kjer je seme za generator naključnih števil.

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

Izhod:

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

f) funkcija saveAsTextFile (pot) shrani nabor podatkov na določeno pot lokacije hdfs

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

g) predelne stene. funkcijo dolžine lahko uporabite za iskanje števila particij v RDD

scala> value.partitions.length

Izhod:

res1: Int = 8

RDD transformacije

Transformacija se uporablja za oblikovanje novega RDD iz obstoječih. Ker so vhodi RDD nespremenljivi, je lahko rezultat, ki nastane pri transformaciji, en ali več RDD kot izhod.

Obstajata dve vrsti transformacij:

  • Ozke transformacije
  • Široke transformacije

Ozke transformacije - Vsak nadrejeni RDD je razdeljen na različne particije in med temi bo le ena particija uporabila podrejeni RDD.

Primer: map () in filter () sta dve osnovni vrsti osnovnih transformacij, ki se imenujeta, ko se pokliče dejanje.

  • funkcija map (func) deluje na vseh elementih v naboru podatkov "vrednost" iterativno, da ustvari izhodni RDD.

Primer: V tem primeru dodamo vrednost 10 vsakemu elementu vrednosti nabora podatkov in prikazujemo transformiran izhod s pomočjo funkcije zbiranja.

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 v osnovi uporablja za filtriranje elementov, ki izpolnjujejo določen pogoj, določen s funkcijo.

Primer: V tem primeru poskušamo pridobiti vse elemente, razen številke 2 „vrednosti“ nabora podatkov, in pridobiti izhod preko funkcije zbiranja.

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 preobrazbe - Enorodna RDD particija je deljena na različnih različnih podrejenih RDD particijah.

Primer: groupbykey in RedubyKey sta primera širokih preobrazb.

  • groupbyKey funkcija razvrsti vrednosti nabora podatkov v pare ključ-vrednost glede na ključne vrednosti iz drugega RDD-ja. Ta postopek vključuje premeščanje, ki poteka, ko skupina po funkcijah zbira podatke, povezane z določenim ključem, in jih shrani v en sam par ključ-vrednost.

Primer: V tem primeru dodamo celo število 5, 6 vrednosti niza "ključ" in celo število 8, dodeljeno "8", ki sta prikazana v istem formatu para ključ-vrednost v izhodu.

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 združuje tudi pare ključ-vrednost iz različnih RDD-jev. Po izvedbi omenjene transformacije združuje ključe in njihove vrednosti v en sam element.

Primer: V tem primeru so skupne tipke matrike "črke" najprej vzporedne s funkcijo in vsaka črka se preslika s številom 10 nanjo. ReduByKey bo dodal vrednosti s podobnimi tipkami in shrani v spremenljivko2. Izhod se nato prikaže s pomočjo funkcije zbiranja.

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)

Skupaj z zgoraj omenjenimi dejanji, kot so razdelitev na RDD in izvajanje dejanj / preobrazb na njih, Spark podpira tudi predpomnjenje, kar je koristno, kadar se isti podatki kličejo rekurzivno.

S pomočjo vseh teh lastnosti lahko Apache Spark obdeluje ogromne količine podatkov in izvaja paketno obdelavo in pretočno obdelavo. Izračun v spominu, ki ga je izvedel Spark, je odgovoren za izjemno hitro obdelavo aplikacij. Zaradi tega je Spark najbolj uporabna metoda zaradi vsestranskosti programiranja v različnih jezikih, enostavnosti uporabe in integracijskih možnosti.

Priporočeni članki

To je priročnik za ukaze iskrivih lupin. Tukaj razpravljamo o različnih vrstah ukazov iskrive lupine za različne programske jezike. Če želite izvedeti več, si oglejte tudi naslednji članek -

  1. Ukazi za skriptno lupino
  2. Kako namestiti iskrilo
  3. Spark Intervju Vprašanja
  4. Iskreni ukazi
  5. Adhoc testiranje
  6. Generator naključnih števil v JavaScript
  7. Vodnik po seznamu ukazov školjke Unix
  8. PySpark SQL | Moduli in metode PySpark SQL
  9. Za zanko v Shell Scripting | Kako zanka deluje?
  10. Batch skriptni ukazi s primeri
  11. Popoln pregled sestavnih delov

Kategorija: