Co jsou příkazy Spark Shell?

Spark shell je rozhraní, které se používá k psaní adhoc dotazů pro práci a porozumění chování Apache Spark. Říká se tomu klastrový počítač s otevřeným zdrojovým kódem, který umí provádět zpracování dat v paměti, jako jsou analytika, ETL, strojové učení obrovských souborů dat. V tomto tématu se budeme učit o příkazech Spark Shell.

Existují různé typy prostředí Spark pro různé programovací jazyky, například:

  1. spark-shell je psán v Scale
  2. Pyspark je v Pythonu a
  3. jiskra pro jazyk R

Jeho samostatnou aplikaci lze vyvinout pomocí Sparka. Je široce používán kvůli své velmi rychlé výpočetní rychlosti. Je to proto, že používá MapReduce ke zpracování různých dotazů a transformací.

Chcete-li spustit příkazy shellu shellu, vyžaduje, aby byla v systému již nainstalována Java a Scala.

Typy příkazů jisker

Různé druhy příkazů Spark-shell jsou následující:

1. K ověření, zda je Spark nainstalován, a ke zjištění jeho verze, je použit příkaz níže (všechny níže uvedené příkazy musí být označeny počínaje tímto symbolem „$“)

$ jiskra

Pokud je nainstalována jiskra, zobrazí se následující výstup:

$ jiskra

SPARK_MAJOR_VERSION je nastavena na 2 pomocí Spark2

Nastavení výchozí úrovně protokolu na „WARN“.

Chcete-li upravit úroveň protokolování, použijte sc.setLogLevel (newLevel). Pro SparkR použijte setLogLevel (newLevel).

Webové uživatelské rozhraní Spark context dostupné na adrese http://10.113.59.34:4040

Kontext iskry dostupný jako 'sc' (master = local (*), id aplikace = local-1568732886588).

K dispozici je iskra jako „jiskra“.

Vítejte v

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Používání 64bitového serveru VM Scala verze 2.11.8 (Java HotSpot (TM), Java 1.8.0_112)

Zadejte výrazy, aby byly vyhodnoceny.

Typ: nápověda pro více informací.

Scala>

2. Základní datová struktura Spark se nazývá RDD (Resilient Distributed Datasets), která obsahuje neměnnou sbírku objektů pro distribuované zpracování záznamů. Všechny datové sady RDD jsou logicky rozděleny do několika uzlů klastru.

RDD lze vytvořit pouze načtením z lokálního systému souborů nebo transformací existujícího RDD.

a) K vytvoření nového RDD používáme následující příkaz:

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

Sc se zde nazývá objekt SparkContext.

Výstup:

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

b) RDD lze vytvořit pomocí Parallelized Collection následujícím způsobem:

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

Výstup:

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

Výstup:

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

c) Chcete-li vytvořit ze stávajících RDD :

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

Výstup:

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

3. Existují dva typy operací Spark RDD, které lze provádět na vytvořených datových sadách:

  • Akce
  • Transformace

Akce: Používá se k provedení určitých požadovaných operací se stávajícími datovými sadami. Následuje několik příkazů, které lze použít k provedení níže uvedených akcí na vytvořených sadách dat:

a) count () funkce pro počítání počtu prvků v RDD:

scala> value.count()

Výstup:

res3: Long = 5

b) funkce collect () pro zobrazení všech prvků pole:

scala> value.collect()

Výstup:

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

c) funkce first () použitá k zobrazení prvního prvku datové sady:

scala> value.first()

Výstup:

res4: Int = 1

d) funkce take (n) zobrazí prvních n prvků pole:

scala> value.take(3)

Výstup:

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

e) funkce takeSample (withReplacement, num, (seed)) zobrazuje náhodné pole prvků „num“, kde je semeno pro generátor náhodných čísel.

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

Výstup:

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

f) saveAsTextFile (path) funkce uloží datový soubor do zadané cesty k umístění hdfs

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

g) oddíly. length length lze použít k nalezení počtu oddílů v RDD

scala> value.partitions.length

Výstup:

res1: Int = 8

Transformace RDD

Transformace se používá k vytvoření nového RDD ze stávajících. Protože vstupy RDD jsou neměnné, může být výsledkem vzniklým při transformaci jeden nebo více RDD jako výstup.

Existují dva typy transformací:

  • Úzké transformace
  • Široké transformace

Úzké transformace - Každý nadřazený RDD je rozdělen na různé oddíly a mezi nimi bude pouze jeden oddíl používat podřízený RDD.

Příklad: map () a filter () jsou dva základní druhy základních transformací, které jsou vyvolány při vyvolání akce.

  • Funkce map (func) pracuje na každém z prvků „hodnoty“ datového souboru iterativně, aby se vytvořil výstupní RDD.

Příklad: V tomto příkladu přidáme hodnotu 10 ke každému z prvků hodnoty datové sady a zobrazíme transformovaný výstup pomocí funkce collect.

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)

funkce filtru (func) se v zásadě používá k odfiltrování prvků splňujících konkrétní podmínku zadanou pomocí funkce.

Příklad: V tomto příkladu se snažíme načíst všechny prvky kromě čísla 2 „hodnoty“ datové sady a načíst výstup pomocí funkce collect.

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é transformace - Jeden nadřazený oddíl RDD je sdílen na svých různých více podřízených oddílech RDD.

Příklad: groupbykey a redubyKey jsou příklady rozsáhlých transformací.

  • Funkce groupbyKey seskupuje hodnoty datové sady do dvojic klíč - hodnota podle hodnot klíčů z jiného RDD. Tento proces zahrnuje míchání, ke kterému dochází, když funkce seskupení shromažďuje data spojená s konkrétním klíčem a ukládá je do jednoho páru klíč-hodnota.

Příklad: V tomto příkladu přiřazujeme celá čísla 5, 6 řetězcové hodnotě „key“ a celé číslo 8 přiřazené „8“, které jsou zobrazeny ve stejném formátu páru klíč – hodnota na výstupu.

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

  • Funkce reduByKey také kombinuje páry klíč - hodnota z různých RDD. Po provedení uvedené transformace kombinuje klíče a jejich příslušné hodnoty do jednoho prvku.

Příklad: V tomto příkladu jsou společné klíče matice „písmena“ nejprve paralelizovány funkcí a každé písmeno je mapováno číslem 10. RedukceByKey přidá hodnoty s podobnými klíči a uloží do proměnné value2. Výstup je pak zobrazen pomocí funkce collect.

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 výše uvedenými akcemi, jako je rozdělení na RDD a provádění akcí / transformací na nich, Spark také podporuje ukládání do mezipaměti, což je užitečné tam, kde se stejná data volají rekurzivně.

S pomocí všech těchto vlastností může Apache Spark zpracovávat obrovské objemy dat a provádět dávkové zpracování a zpracování datových proudů. Výpočet v paměti provedený Sparkem je zodpovědný za extrémně rychlé zpracování aplikací. Spark je proto metodou go-to, protože má mnohostranné programování v různých jazycích, snadné použití a možnosti integrace.

Doporučené články

Toto je průvodce příkazy Spark Shell. Zde diskutujeme různé typy příkazů jisker pro různé programovací jazyky. Další informace naleznete také v následujícím článku -

  1. Příkazy skriptování prostředí
  2. Jak nainstalovat Spark
  3. Spark Otázky k rozhovoru
  4. Příkazy jisker
  5. Adhoc testování
  6. Generátor náhodných čísel v JavaScriptu
  7. Průvodce seznamem unixových příkazů shellu
  8. PySpark SQL | Moduly a metody PySpark SQL
  9. Pro opakování ve smyčce Jak funguje smyčka?
  10. Dávkové skriptovací příkazy s příklady
  11. Kompletní přehled komponent jisker

Kategorie: