Čo sú príkazy Spark Shell?

Spark shell je rozhranie, ktoré sa používa na písanie adhoc dopytov na prácu a porozumenie chovania Apache Spark. Nazýva sa to klasterový počítač s otvoreným zdrojovým kódom, ktorý dokáže spracovávať údaje v pamäti, napríklad pre analytiku, ETL, strojové učenie obrovských súborov údajov. V tejto téme sa dozvieme viac o príkazoch Spark Shell.

Existujú rôzne typy prostredia Spark pre rôzne programovacie jazyky, napríklad:

  1. iskra je napísaná v Scale
  2. Pyspark je v Pythone a
  3. iskra pre jazyk R

Jeho samostatnú aplikáciu je možné vyvinúť pomocou programu Spark. Je široko používaný kvôli svojej veľmi rýchlej výpočtovej rýchlosti. Je to preto, že používa MapReduce na spracovanie rôznych dopytov a transformácií.

Ak chcete spustiť príkazy iskry, vyžaduje, aby boli v systéme už nainštalované programy Java a Scala.

Typy príkazov Spark Shell

Rôzne druhy príkazov Spark-shell sú nasledujúce:

1. Na kontrolu, či je nainštalovaná iskra a či je použitá jej verzia, sa používa príkaz uvedený nižšie (všetky príkazy uvedené nižšie sa označujú počnúc týmto symbolom „$“).

$ iskra

Ak je nainštalovaná iskra, zobrazí sa nasledujúci výstup:

$ iskra

SPARK_MAJOR_VERSION je nastavený na 2 pomocou Spark2

Nastavenie predvolenej úrovne denníka na „WARN“.

Na úpravu úrovne protokolovania použite sc.setLogLevel (newLevel). Pre SparkR použite setLogLevel (newLevel).

Webové používateľské rozhranie s iskrami dostupné na http: 10/1013139: 94:4440

Kontext iskry dostupný ako 'sc' (master = local (*), id aplikácie = local-1568732886588).

K dispozícii sú iskry ako „iskra“.

Vitajte v

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Používanie softvéru Scala verzie 2.11.8 (64-bitový server VM HotSpot ™, Java 1.8.0_112)

Zadajte výrazy, aby boli vyhodnotené.

Typ: pomoc pre ďalšie informácie.

scala>

2. Základná dátová štruktúra programu Spark sa nazýva RDD (Resilient Distributed Datasets), ktorá obsahuje nemennú zbierku objektov na distribuované výpočty záznamov. Všetky množiny údajov RDD sú logicky rozdelené do viacerých uzlov klastra.

RDD sa dá vytvoriť iba čítaním z lokálneho systému súborov alebo transformáciou existujúceho RDD.

a) Na vytvorenie nového RDD používame nasledujúci príkaz:

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

Sc sa tu nazýva objekt SparkContext.

Výkon:

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

b) RDD je možné vytvoriť prostredníctvom Parallelized Collection takto:

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

Výkon:

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

Výkon:

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

c) Vytvorenie z existujúcich RDD :

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

Výkon:

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

3. Existujú dva typy operácií Spark RDD, ktoré možno vykonať na vytvorených množinách údajov:

  • Akcia
  • transformácia

Akcie: Používa sa na vykonávanie určitých požadovaných operácií s existujúcimi súbormi údajov. Nasleduje niekoľko príkazov, ktoré možno použiť na vykonanie nasledujúcich akcií na vytvorených množinách údajov:

a) count () funkcia na spočítanie počtu prvkov v RDD:

scala> value.count()

Výkon:

res3: Long = 5

b) funkcia collect () na zobrazenie všetkých prvkov poľa:

scala> value.collect()

Výkon:

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

c) funkcia first () použitá na zobrazenie prvého prvku súboru údajov:

scala> value.first()

Výkon:

res4: Int = 1

d) funkcia take (n) zobrazuje prvých n prvkov poľa:

scala> value.take(3)

Výkon:

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

e) funkcia takeSample (withReplacement, num, (seed)) zobrazuje náhodné pole prvkov „num“, kde je semeno pre generátor náhodných čísel.

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

Výkon:

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

f) funkcia saveAsTextFile (cesta) uloží množinu údajov do určenej cesty k umiestneniu hdfs

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

g) priečky. length funkciu možno použiť na nájdenie počtu oddielov v RDD

scala> value.partitions.length

Výkon:

res1: Int = 8

Transformácie RDD

Transformácia sa používa na vytvorenie nového RDD z existujúcich. Pretože vstupy RDD sú nemenné, výsledkom vytvoreným po transformácii môže byť jeden alebo viac RDD ako výstup.

Existujú dva typy transformácií:

  • Úzke premeny
  • Široké premeny

Úzke transformácie - Každý nadradený RDD je rozdelený do rôznych oddielov a medzi nimi bude iba jeden oddiel používať podradený RDD.

Príklad: map () a filter () sú dva základné druhy základných transformácií, ktoré sa volajú pri vyvolaní akcie.

  • Funkcia map (func) pracuje na každom z prvkov v „hodnotovej“ množine údajov a vytvára výstupný RDD.

Príklad: V tomto príklade pridávame hodnotu 10 ku každému z prvkov hodnoty množiny údajov a zobrazujeme transformovaný výstup pomocou funkcie zhromažďovania.

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)

funkcia filtra (func) sa v zásade používa na odfiltrovanie prvkov spĺňajúcich konkrétnu podmienku uvedenú pomocou funkcie.

Príklad: V tomto príklade sa snažíme načítať všetky prvky okrem čísla 2 „hodnoty“ množiny údajov a vyvolať výstup pomocou funkcie zhromažďovania.

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)

Široké transformácie - Jeden rodičovský oddiel RDD je zdieľaný na svojich rôznych viacerých podradených oddieloch RDD.

Príklad: groupbykey a redubyKey sú príklady rozsiahlych transformácií.

  • Funkcia groupbyKey zoskupuje hodnoty množiny údajov do párov kľúč - hodnota podľa hodnôt kľúčov z iného RDD. Tento proces zahŕňa premiešanie, ktoré sa uskutoční, keď skupina podľa funkcie zhromažďuje údaje spojené s konkrétnym kľúčom a ukladá ich do jedného páru kľúč - hodnota.

Príklad: V tomto príklade priraďujeme celé číslo 5, 6 k reťazcovej hodnote „key“ a celé číslo 8 priradené k „8“, ktoré sú zobrazené na výstupe v rovnakom formáte páru kľúč - hodnota.

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

  • Funkcia reduByKey tiež kombinuje páry kľúč - hodnota z rôznych RDD. Po vykonaní uvedenej transformácie kombinuje kľúče a ich príslušné hodnoty do jedného prvku.

Príklad: V tomto príklade sú spoločné kľúče polí „písmená“ najskôr funkcionalizované paralelne a každé písmeno je do neho mapované počtom 10. Funkcia reduByKey pridá hodnoty s podobnými kľúčmi a uloží ich do premennej value2. Výstup sa potom zobrazí pomocou funkcie zhromažďovania.

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)

Spolu s vyššie uvedenými činnosťami, ako je rozdelenie na RDD a vykonávanie akcií / transformácií na nich, Spark tiež podporuje ukladanie do vyrovnávacej pamäte, čo je užitočné, keď sa rovnaké dáta volajú rekurzívne.

S pomocou všetkých týchto vlastností môže Apache Spark spracovať obrovské objemy údajov a vykonávať dávkové spracovanie a spracovanie streamov. Výpočty v pamäti Sparkom sú zodpovedné za mimoriadne rýchle spracovanie aplikácií. Spark je preto metódou go-to, pretože má mnohostranné možnosti programovania v rôznych jazykoch, jednoduché použitie a možnosti integrácie.

Odporúčané články

Toto je sprievodca príkazmi Spark Shell. Tu diskutujeme o rôznych typoch príkazov Spark Shell pre rôzne programovacie jazyky. Viac informácií nájdete aj v nasledujúcom článku -

  1. Príkazy skriptovania prostredia Shell
  2. Ako nainštalovať iskru
  3. Spark Interview Otázky
  4. Príkazy na iskry
  5. Adhoc Testovanie
  6. Generátor náhodných čísel v JavaScripte
  7. Sprievodca zoznamom príkazov shellu Unix
  8. PySpark SQL | Moduly a metódy PySpark SQL
  9. Pre skriptovanie v slučke Ako funguje slučka?
  10. Dávkové skriptovacie príkazy s príkladmi
  11. Kompletný prehľad komponentov iskier

Kategórie: