Vad är gnistskal-kommandon?

Spark shell är ett gränssnitt som används för att skriva adhocfrågor för att arbeta och förstå Apache Sparks beteende. Det kallas cluster computing-öppen källkodsmotor som kan göra in-minne-bearbetning av data såsom för analys, ETL, maskininlärning för enorma uppsättningar av data. I det här ämnet kommer vi att lära oss om gnistskal-kommandon.

Det finns olika typer av gnistskal för olika programmeringsspråk, till exempel:

  1. gnistskal är skriven i Scala
  2. pyspark ligger i Python och
  3. sparkR för R-språk

Man kan utveckla sin fristående applikation med hjälp av Spark. Det används ofta på grund av dess supersnabba beräkningshastighet. Det beror på att det använder MapReduce för att bearbeta olika frågor och omvandlingar.

För att köra gnist-skal-kommandon kräver det att Java och Scala redan är installerade i systemet.

Typer av gnistskal-kommandon

De olika sorters Spark-shell-kommandon är följande:

1. För att kontrollera om gnistan är installerad och att känna till dess version, under kommandot, används (Alla kommandon nedan ska anges börjar med denna symbol "$")

$ gnistskal

Följande utgång visas om gnisten är installerad:

$ gnistskal

SPARK_MAJOR_VERSION är inställd på 2 med Spark2

Ställer in standardloggnivån på “WARN”.

För att justera loggningsnivån använder du sc.setLogLevel (newLevel). För SparkR använder du setLogLevel (newLevel).

Gnistkontext-webbgränssnitt tillgängligt på http://10.113.59.34:4040

Gnistkontext tillgängligt som 'sc' (master = local (*), app-id = local-1568732886588).

Gnist session tillgänglig som "gnista".

Välkommen till

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Använda Scala version 2.11.8 (Java HotSpot (TM) 64-bitars Server VM, Java 1.8.0_112)

Skriv in uttryck för att få dem utvärderade.

Typ: hjälp för mer information.

scala>

2. Den grundläggande datastrukturen för Spark kallas en RDD (Resilient Distribuerade databas) som innehåller en immutable samling av objekt för distribuerad datorberäkning. Alla datasätt för RDD är logiskt fördelade över flera noder i ett kluster.

En RDD kan bara skapas genom att läsa från ett lokalt filsystem eller genom att transformera en befintlig RDD.

a) För att skapa en ny RDD använder vi följande kommando:

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

Här kallas sc för objektet med SparkContext.

Produktion:

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

b) En RDD kan skapas genom Parallelized Collection enligt följande:

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

Produktion:

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

Produktion:

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

c) Så här skapar du från befintliga RDD :

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

Produktion:

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

3. Det finns två typer av Spark RDD-operationer som kan utföras på de skapade datasätten:

  • Handlingar
  • transformationer

Åtgärder: Det används för att utföra vissa nödvändiga åtgärder på befintliga datasätt. Följande är några av de kommandon som kan användas för att utföra åtgärder nedan på de skapade datasätten:

a) count () -funktion för att räkna antalet element i RDD:

scala> value.count()

Produktion:

res3: Long = 5

b) samla () -funktion för att visa alla element i arrayen:

scala> value.collect()

Produktion:

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

c) first () -funktion som används för att visa det första elementet i datasatsen:

scala> value.first()

Produktion:

res4: Int = 1

d) take (n) -funktionen visar de första n-elementen i matrisen:

scala> value.take(3)

Produktion:

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

e) takeSample (withReplacement, num, (seed)) -funktionen visar en slumpmässig uppsättning av "num" -element där fröet är för slumptalsgeneratorn.

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

Produktion:

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

f) SaveAsTextFile (sökväg) -funktionen sparar datasatsen i den angivna sökvägen för hdfs-platsen

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

g) partitioner. längdfunktion kan användas för att hitta antalet partitioner i RDD

scala> value.partitions.length

Produktion:

res1: Int = 8

RDD Transformationer

Transformation används för att bilda en ny RDD från de befintliga. Eftersom ingångarna till RDD är oföränderliga kan resultatet som bildas vid transformation vara en eller flera RDD som utgång.

Det finns två typer av transformationer:

  • Smala transformationer
  • Bred transformationer

Smala transformationer - Varje förälder RDD är indelad i olika partitioner och bland dessa kommer endast en partition att användas av barnet RDD.

Exempel: karta () och filter () är de två grundläggande typerna av grundtransformationer som kallas när en åtgärd kallas.

  • map (func) -funktionen fungerar på vart och ett av elementen i datasatsen "värde" iterativt för att producera utgången RDD.

Exempel: I det här exemplet lägger vi till värdet 10 till var och en av elementen i datasättvärdet och visar den transformerade utgången med hjälp av samlingsfunktion.

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) -funktion används i princip för att filtrera bort elementen som uppfyller ett visst villkor som anges med funktionen.

Exempel: I det här exemplet försöker vi hämta alla element förutom nummer 2 i datasatsen "värde" och hämta utdata via samlingsfunktionen.

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)

Wide Transformations - En enskild förälder RDD-partition delas på sina olika RDD-partitioner med flera barn.

Exempel: groupbykey och reducbybyey är exempel på breda transformationer.

  • groupbyKey-funktionen grupperar datasetvärdena i nyckelvärdespar enligt nyckelvärdena från en annan RDD. Denna process involverar blandning för att ske när gruppen per funktion samlar in data som är associerade med en viss nyckel och lagrar dem i ett enda nyckelvärdespar.

Exempel: I det här exemplet tilldelar vi heltal 5, 6 till strängvärdet "nyckel" och heltal 8 tilldelat "8" som visas i samma nyckelvärdesparformat i utgången.

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-funktionen kombinerar också nyckelvärdespar från olika RDD: er. Den kombinerar nycklarna och deras respektive värden till ett enda element efter att ha genomfört den nämnda transformationen.

Exempel: I det här exemplet parallelliseras först de vanliga nycklarna för matrisen "bokstäver" av funktionen och varje bokstav mappas med räkningen 10 till den. The reducByKey kommer att lägga till värden med liknande nycklar och sparar i variabelt värde2. Utgången visas sedan med samlingsfunktionen.

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)

Tillsammans med ovan nämnda åtgärder som partitionering till RDD och utförande av åtgärder / transformationer på dem, stöder Spark också cache som är användbart där samma data kallas rekursivt.

Med hjälp av alla dessa egenskaper kan Apache Spark bearbeta enorma datamängder och utföra batchbearbetning och streamingbehandling. Beräkningen i minnet som gjorts av Spark ansvarar för extremt snabb behandling av applikationer. Därför är Spark go-to-metoden på grund av dess mångsidighet att programmera på olika språk, användarvänlighet och integrationsfunktioner.

Rekommenderade artiklar

Detta är en guide till Spark Shell-kommandon. Här diskuterar vi olika typer av gnistskal-kommandon för olika programmeringsspråk. Du kan också titta på följande artikel för att lära dig mer -

  1. Shell-skriptkommandon
  2. Hur man installerar gnista
  3. Sparkintervjufrågor
  4. Gnistkommandon
  5. Adhoc-testning
  6. Random Number Generator i JavaScript
  7. Guide till listan över Unix Shell-kommandon
  8. PySpark SQL | Moduler och metoder för PySpark SQL
  9. För Loop in Shell Scripting | Hur fungerar slingan?
  10. Batch scripting kommandon med exempel
  11. Komplett översikt över gnistkomponenter

Kategori: