Mikä on Spark Shell -komennot?

Spark-kuori on käyttöliittymä, jota käytetään adhoc-kyselyiden kirjoittamiseen toimimaan ja ymmärtämään Apache Sparkin käyttäytymistä. Sitä kutsutaan klusteritietokoneeksi avoimen lähdekoodin moottoriksi, joka pystyy käsittelemään muistissa olevia tietoja, kuten analytiikka, ETL, koneoppiminen valtaville tietosarjoille. Tässä aiheessa aiomme oppia Spark Shell -komennoista.

Eri tyyppisiä Spark-kuoria on olemassa erilaisille ohjelmointikieleille, esimerkiksi:

  1. kipinäkuori on kirjoitettu Scalassa
  2. pyspark on Pythonissa ja
  3. sparkR R-kielelle

Sparkilla voidaan kehittää itsenäistä sovellustaan. Sitä käytetään laajasti erittäin nopean laskennopeudensa vuoksi. Tämä johtuu siitä, että se käyttää MapReducea useiden kyselyjen ja muunnosten käsittelemiseen.

Spark-shell-komentojen suorittamiseksi se vaatii Java- ja Scala-ohjelmien jo asennettuna järjestelmään.

Spark Shell -komentojen tyypit

Erilaiset Spark-shell-komennot ovat seuraavat:

1. Tarkistetaan, onko Spark asennettu ja tiedät sen version alla olevasta komennosta (kaikki tämän jälkeen annettavat komennot on ilmoitettava alkamalla tällä symbolilla “$”)

$ kipinäkuori

Seuraava lähtö näkyy, jos kipinä on asennettu:

$ kipinäkuori

SPARK_MAJOR_VERSION on asetettu arvoon 2 Spark2: lla

Aseta oletuslokin tasoksi “WARN”.

Lokitason säätämiseksi käytä sc.setLogLevel (newLevel). Käytä SparkR: ää setLogLevel (newLevel).

Spark-kontekstin web-käyttöliittymä saatavana osoitteessa http://10.113.59.34:4040

Spark-konteksti saatavana nimellä 'sc' (master = local (*), app id = local-1568732886588).

Spark session saatavana nimellä 'spark'.

Tervetuloa

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Scala-version 2.11.8 käyttäminen (Java HotSpot (TM) 64-bittinen palvelinohjain, Java 1.8.0_112)

Kirjoita lausekkeet saadaksesi ne arvioimaan.

Tyyppi: ohje lisätietoja varten.

Scala>

2. Sparkin perustietorakennetta kutsutaan RDD: ksi (Resilient Distributed Datasets), joka sisältää muuttumattoman esinekokoelman tietueiden hajautettua laskentaa varten. Kaikki RDD-tietojoukot on jaettu loogisesti klusterin useiden solmujen yli.

RDD voidaan luoda vain lukemalla paikallisesta tiedostojärjestelmästä tai muuntamalla olemassa oleva RDD.

a) Uuden RDD: n luomiseen käytämme seuraavaa komentoa:

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

Tätä sc kutsutaan SparkContext -objektiksi.

lähtö:

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

b) RDD voidaan luoda rinnakkaiskokoelman avulla seuraavasti:

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

lähtö:

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

lähtö:

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

c) Luominen olemassa olevista RDD-tiedoista :

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

lähtö:

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

3. On olemassa kahden tyyppisiä Spark RDD -operaatioita, jotka voidaan suorittaa luotuihin tietojoukkoihin:

  • Toiminnot
  • muunnokset

Toimet: Sitä käytetään tiettyjen vaadittavien toimintojen suorittamiseen olemassa olevissa tietojohdoissa. Seuraavassa on muutamia komennoista, joita voidaan käyttää suorittamaan alla olevat toiminnot luodussa tietojoukossa:

a) count () -toiminto elementtien määrän laskemiseen RDD: ssä:

scala> value.count()

lähtö:

res3: Long = 5

b) kerätä () -toiminto kaikkien taulukon elementtien näyttämiseksi:

scala> value.collect()

lähtö:

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

c) ensimmäinen () -toiminto, jota käytetään tietojoukon ensimmäisen elementin näyttämiseen:

scala> value.first()

lähtö:

res4: Int = 1

d) take (n) -toiminto näyttää taulukon ensimmäiset n elementtiä:

scala> value.take(3)

lähtö:

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

e) takeSample (withReplacement, num, (siemen)) -toiminto näyttää satunnaisjoukon ”num” -elementtejä, joissa siemen on satunnaislukugeneraattorille.

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

lähtö:

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

f) saveAsTextFile (path) -toiminto tallentaa tietojoukon määritettyyn hdfs-sijaintipolkuun

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

g) osiot. pituus-toimintoa voidaan käyttää osioiden määrän löytämiseen RDD: stä

scala> value.partitions.length

lähtö:

res1: Int = 8

RDD-muutokset

Transformaatiota käytetään uuden RDD: n muodostamiseen olemassa olevista. Koska RDD: n tulot ovat muuttumattomia, muuntamisen yhteydessä muodostuva tulos voi olla yksi tai useampi RDD tulosteena.

Transformaatioita on kahta tyyppiä:

  • Kapeat muutokset
  • Leveät muutokset

Kapeat muunnokset - Jokainen vanhemman RDD on jaettu eri osioihin, ja näistä vain yksi osio käytetään ala-RDD: ssä.

Esimerkki: kartta () ja suodatin () ovat kaksi perusmuotoa perustransformaatioista, joita kutsutaan, kun toiminto kutsutaan.

  • kartta (func) -toiminto toimii jokaisessa tietojoukon "arvo" -elementissä tuottaaksesi lähtö-RDD: n.

Esimerkki: Tässä esimerkissä lisäämme arvon 10 jokaiselle tietojoukon arvon elementille ja näytämme muunnetun lähdön keräystoiminnon avulla.

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)

suodatin (func) -toimintoa käytetään periaatteessa suodattamaan elementit, jotka täyttävät tietyn toiminnon avulla määritellyn tilan.

Esimerkki: Tässä esimerkissä yritämme noutaa kaikki elementit lukuun ottamatta tietojoukon "arvo" numeroa 2 ja noutaa tulosteen keräystoiminnon kautta.

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)

Laajamuunnokset - Yhden vanhemman RDD-osio jaetaan useille useiden lasten RDD-osioille.

Esimerkki: ryhmänäppäin ja vähentämisnäppäin ovat esimerkkejä laajoista muutoksista.

  • groupbyKey-toiminto ryhmittelee tietojoukon arvot avain-arvopareihin toisen RDD-avaimen arvojen mukaan. Tähän prosessiin sisältyy sekoittaminen tapahtuvaksi, kun ryhmä funktioittain kerää tiettyyn avaimeen liittyvän datan ja tallentaa ne yhteen avain-arvo-pariin.

Esimerkki: Tässä esimerkissä osoitamme kokonaisluvut 5, 6 merkkijonoarvolle “avain” ja kokonaislukua 8, joille on annettu ”8”, jotka näytetään samassa avain-arvo-parimuodossa ulostulossa.

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

  • ReduyByKey-toiminto yhdistää myös eri RDD: n avain-arvo-parit. Se yhdistää avaimet ja niiden vastaavat arvot yhdeksi elementiksi mainitun muunnoksen suorittamisen jälkeen.

Esimerkki: Tässä esimerkissä taulukon "kirjaimet" yleisiä näppäimiä yhdenmukaistetaan ensin funktion avulla ja kukin kirjain on kartoitettu numerolla 10 siihen. ReduyByKey lisää arvot, joilla on samanlaiset avaimet, ja tallentaa muuttujaan arvo2. Lähtö näytetään sitten keräystoiminnolla.

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)

Yllä olevien yllä mainittujen toimintojen, kuten osiointi RDD: hen ja toimintojen / muuntamisten suorittaminen niihin, lisäksi Spark tukee välimuistia, joka on hyödyllinen silloin, kun samaa dataa kutsutaan rekursiivisesti.

Kaikkien näiden ominaisuuksien avulla Apache Spark pystyy käsittelemään valtavia määriä dataa ja suorittamaan erä- ja suoratoistoprosessointia. Sparkin suorittama muistilaskenta on vastuussa sovellusten erittäin nopeasta käsittelystä. Siksi Spark on menetelmä, joka tarjoaa monipuolisen ohjelmoinnin eri kielillä, helpon käytön ja integrointikyvyn.

Suositellut artikkelit

Tämä on opas Spark Shell -komentoihin. Tässä keskustellaan Spark Shell -komentojen erityypeistä eri ohjelmointikieleille. Voit myös tarkastella seuraavaa artikkelia saadaksesi lisätietoja -

  1. Shell Scripting -komennot
  2. Kuinka asentaa Spark
  3. Spark-haastattelukysymykset
  4. Kipinäkomennot
  5. Adhoc-testaus
  6. Satunnaislukugeneraattori JavaScript
  7. Opas Unix-kuorikomentojen luetteloon
  8. PySpark SQL | PySpark SQL: n moduulit ja menetelmät
  9. Silmukalle komentosarjoissa | Kuinka silmukka toimii?
  10. Eräkomentosarjan komennot esimerkeillä
  11. Täydellinen kuvaus kipinäkomponenteista

Luokka: