Mis on Spark Shelli käsud?

Spark-kest on liides, mida kasutatakse adhoc-päringute kirjutamiseks, et töötada ja Apache Sparki käitumist mõista. Seda nimetatakse klastrite arvutamise avatud lähtekoodiga mootoriks, mis suudab mälusiseseid andmeid töödelda, näiteks analüütika, ETL, tohutute andmekogumite masinõppimine. Selles teemas õpime tundma Spark Shelli käske.

Erinevate programmeerimiskeelte jaoks on olemas eri tüüpi Spark-kestad:

  1. säde-kest on kirjutatud Scalas
  2. pyspark on Pythonis ja
  3. sparkR R-keele jaoks

Sparki abil saab välja töötada oma eraldiseisva rakenduse. Seda kasutatakse laialdaselt ülikiire arvutuskiiruse tõttu. Selle põhjuseks on asjaolu, et see kasutab MapReduce mitmesuguste päringute ja teisenduste töötlemiseks.

Spark-shell-käskude käitamiseks on Java ja Scala juba süsteemis installitud.

Spark Shell-käskude tüübid

Spark-shell-käskude erinevad tüübid on järgmised:

1. Kontrollimaks, kas säde on installitud, ja selle versiooni teada saamiseks kasutatakse alltoodud käsku (kõik järgmised käsud tuleb näidata selle sümboliga “$”)

$ säde-kest

Kui säde on paigaldatud, kuvatakse järgmine väljund:

$ säde-kest

SPARK_MAJOR_VERSION on seatud väärtusele 2, kasutades funktsiooni Spark2

Logi vaiketaseme seadmine väärtusele „WARN”.

Logimistaseme kohandamiseks kasutage sc.setLogLevel (newLevel). SparkR-i jaoks kasutage setLogLevel (newLevel).

Spark-konteksti veebi kasutajaliides on saadaval aadressil http://10.113.59.34:4040

Sädeikontekst on saadaval kui „sc” (master = kohalik (*), rakenduse id = kohalik-1568732886588).

Sädemeseanss on saadaval kui säde.

Tere tulemast

____ __

/ __ / __ ___ _____ / / __

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

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

/ _ /

Scala versiooni 2.11.8 kasutamine (Java HotSpot (TM) 64-bitise serveri VM, Java 1.8.0_112)

Tippige avaldisi, et neid hinnata.

Tüüp: lisateabe saamiseks abi.

skala>

2. Sparki põhiandmestruktuuri nimetatakse RDD-ks (Resilient Distributed Datasets), mis sisaldab objektide muutumatut kogumit dokumentide hajutatud arvutamiseks. Kõik RDD andmestikud jaotatakse loogiliselt klastri mitme sõlme vahel.

RDD-d saab luua ainult kohalikust failisüsteemist lugedes või olemasolevat RDD-d muutes.

a) Uue RDD loomiseks kasutame järgmist käsku:

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

Sc nimetatakse SparkContext objektiks.

Väljund:

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

b) RDD saab paralleelse kogumise kaudu luua järgmiselt:

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

Väljund:

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

Väljund:

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

c) Looge olemasolevatest RDD-dest :

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

Väljund:

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

3. Spark RDD toiminguid on kahte tüüpi, mida saab loodud andmekogudega teostada:

  • Tegevused
  • Muundumised

Toimingud: seda kasutatakse olemasolevate andmekogumite teatud nõutavate toimingute tegemiseks. Järgnevalt on toodud mõned käsud, mida saab kasutada loodud andmestike allpool toodud toimingute tegemiseks:

a) funktsioon count () RDD elementide arvu loendamiseks:

scala> value.count()

Väljund:

res3: Long = 5

b) funktsioon koguda () massiivi kõigi elementide kuvamiseks:

scala> value.collect()

Väljund:

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

c) esimene () funktsioon, mida kasutatakse andmestiku esimese elemendi kuvamiseks:

scala> value.first()

Väljund:

res4: Int = 1

d) funktsioon take (n) kuvab massiivi esimesed n elementi:

scala> value.take(3)

Väljund:

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

e) funktsioon takeSample (withReplacement, num, (seed)) kuvab num numelementide juhusliku massiivi, kus seeme on juhuslike arvude generaatori jaoks.

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

Väljund:

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

f) saveAsTextFile (tee) funktsioon salvestab andmestiku hdfs-i asukoha kindlaksmääratud teele

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

g) vaheseinad. pikkuse funktsiooni saab kasutada RDD-s partitsioonide arvu leidmiseks

scala> value.partitions.length

Väljund:

res1: Int = 8

RDD teisendused

Ümberkujundamist kasutatakse uue RDD moodustamiseks olemasolevatest. Kuna RDD sisendid on muutumatud, võib muundamisel saadud tulemus väljundina olla üks või mitu RDD.

Transformatsioone on kahte tüüpi:

  • Kitsad transformatsioonid
  • Laiad teisendused

Kitsad teisendused - iga vanema RDD jaguneb erinevateks partitsioonideks ja nende hulgas kasutab lapse alane RDD ainult ühte partitsiooni.

Näide: map () ja filter () on kaks peamist põhitransformatsiooni tüüpi, mida kutsutakse toimingu kutsumisel.

  • Kaardifunktsioon (func) töötab väljundi RDD saamiseks iteratiivselt kõigil andmestiku „väärtus” elementidel.

Näide: Selles näites lisame andmestiku väärtuse igale elemendile väärtuse 10 ja kuvame teisendatud väljundi kogumisfunktsiooni abil.

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)

funktsiooni filter (func) kasutatakse põhimõtteliselt funktsiooni abil täpsustatud tingimusele vastavate elementide filtreerimiseks.

Näide: Selles näites proovime hankida kõik elemendid, välja arvatud andmestiku “väärtus” number 2, ja väljundi toomine kogumisfunktsiooni kaudu.

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)

Lai teisendused - üksikvanemate RDD sektsiooni jagatakse mitmetel mitme lapse RDD sektsioonidel.

Näide: grupiklahv ja taandeklahv on näited laiadest teisendustest.

  • funktsioon groupbyKey grupeerib andmestiku väärtused võtme-väärtuse paaridesse vastavalt teise RDD võtmeväärtustele. See protsess hõlmab jaotust, mis toimub siis, kui funktsioonide grupp kogub konkreetse võtmega seotud andmeid ja salvestab need ühte võtme ja väärtuse paari.

Näide: Selles näites määrame stringi väärtusele “key” täisarvud 5, 6 ja “8” -le täisarvu 8, mis kuvatakse väljundis samas võtme-väärtuse paari vormingus.

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

  • Reduktsiooni funktsioon ReduByKey ühendab ka võtme-väärtuse paarid erinevatest RDDdest. See ühendab võtmed ja nende vastavad väärtused üheks elemendiks pärast nimetatud teisenduse tegemist.

Näide: Selles näites paralleeritakse funktsiooni abil massiivi "tähed" tavalised võtmed ja iga täht kaardistatakse arvuga 10. RedutseerijaByKey lisab sarnaste võtmetega väärtused ja salvestab muutuja väärtus2. Seejärel kuvatakse väljund kogumisfunktsiooni abil.

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)

Koos ülalnimetatud toimingutega, näiteks eraldamine RDD-ga ja nende abil toimingute / teisenduste tegemine, toetab Spark ka vahemällu salvestamist, millest on abi siis, kui samu andmeid kutsutakse rekursiivselt.

Kõigi nende omaduste abil saab Apache Spark töödelda tohutul hulgal andmeid ning teostada pakkide töötlemist ja voogesituse töötlemist. Sparki tehtud mälusisene arvutus vastutab rakenduste eriti kiire töötlemise eest. Seetõttu on Spark lähenemisviis, kuna sellel on eri keeltes programmeerimise mitmekülgsus, kasutusmugavus ja integreerimisvõimalused.

Soovitatavad artiklid

See on Spark Shelli käskude juhend. Siin käsitleme Spark Shell-käskude erinevaid tüüpe erinevate programmeerimiskeelte jaoks. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. Koore skriptimise käsud
  2. Kuidas installida säde
  3. Spark Intervjuu küsimused
  4. Sädeme käsud
  5. Adhoci testimine
  6. Juhuslike arvude generaator JavaScriptis
  7. Unixi kesta käskude loendi juhend
  8. PySpark SQL | PySpark SQL moodulid ja meetodid
  9. Loopi jaoks skriptis | Kuidas silmus töötab?
  10. Pakkkriptide käsud koos näidetega
  11. Spark-komponentide täielik ülevaade

Kategooria: