RDD sissejuhatus Sparkis

RDD, mis tähistab elastset hajutatud andmestikku, on Sparki üks olulisemaid mõisteid. See on kirjutuskaitstud kirjete kogum, mis on osadeks jagatud ja jaotunud klastri jaotuses. Selle saab toimingute kaudu muuta mõneks teiseks RDD-ks ja kui RDD on loodud, ei saa seda muuta, vaid luuakse uus RDD.

Üks oluline omadus, mille kaudu Spark ületas Hadoopi piirangud, on RDD kaudu, kuna andmete kopeerimise asemel hoiab Resilient Distributed Datasets (RDD) andmeid klastri sõlmede vahel ja taastab andmed liini graafiku abil. Hadoopis hoiti andmeid üleliigselt masinate hulgas, mis andsid tõrketaluvuse omaduse. Seega on RDD Sparki poolt hajutatud andmete ja arvutamise jaoks põhiline abstraktsioon.

RDD loomise erinevad viisid on

  • Välise andmekogumi laadimine
  • Andmete edastamine paralleelmeetodi kaudu
  • Olemasoleva RDD ümberkujundamine

Arutleme igaühe kohta üksikasjalikult, kuid enne seda peame seadistama sädeme, mis on sädeme juhtprogramm. Selles artiklis oleme lisanud koodiridade skala. RDD-del võib olla mis tahes tüüpi Pythoni, Java või Scala objekte, sealhulgas kasutaja määratletud klassid. Allpool on toodud sammud, mida tuleb sädemekesta käivitamiseks järgida.

Spark-Shelli käivitamine

1. samm: laadige säde alla ja pakkige see lahti. Laadige ametlikust veebisaidilt alla sädeme praegune versioon. Pakkige allalaaditud fail oma süsteemi suvalisse kohta.

2. samm: skaala seadistamine

  • Laadige scala alla scala lang.org
  • Installi Scala
  • Seadke keskkonnamuutuja SCALA_HOME ja määrake muutuja PATH skaala prügikataloogiks.

3. samm: käivitage säde. Avage käsuviip ja liikuge sädeme kausta. Käivita säde.

RDD loomise erinevad viisid

1. Välise andmekogumi laadimine

SparkContext 'textFile'i meetodit kasutatakse andmete laadimiseks mis tahes allikast, mis omakorda loob RDD. Spark toetab mitmesuguseid allikaid, kust andmeid saab hankida, näiteks Hadoop, HBase, Amazon S3 jne. Üks andmeallikas on tekstifail, mida me siin arutasime. Lisaks tekstifailidele toetab spark's scala API ka teisi andmevorminguid, näiteks tervikteksti failid, jadafail, Hadoopi RDF ja palju muud.

Näide

val file = sc.textFile("/path/textFile.txt"") // relative path

Muutuja nimega fail on RDD, mis on loodud kohaliku süsteemi tekstifailist. Spark-shellis on sädekonteksti objekt (sc) juba loodud ja seda kasutatakse sädemele pääsemiseks. TextFile on klassi org.apache.spark.SparkContext meetod, mis loeb HDFS-ist, kohalikust failisüsteemist või mis tahes Hadoopi toetatud failisüsteemi URI-st tekstifaili ja tagastab selle stringide RDD-na. Seega on selle meetodi sisendiks URI ja jaotatakse andmed sõlmede vahel.

2. Andmete edastamine paralleelmeetodi abil

Teine võimalus RDD-de loomiseks on olemasoleva mälusisese kogu võtmine ja edastamine SparkContext-meetodi paralleelseks muutmiseks. Kuigi sädeme õppimine, on selline RDD-de loomise viis üsna kasulik, kuna saame luua RDD-d koorega ja teostada ka toiminguid. Vaevalt kasutatakse seda väljaspool testimist ja prototüüpimist, kuna selleks on vaja, et kogu teave oleks kohalikus arvutis kättesaadav. Üks oluline punkt paralleelsuse osas on partitsioonide arv, millesse kogum on jaotatud. Saame paralleelimismeetodis numbri (partitsioonid) teise parameetrina edastada ja kui arvu ei täpsustata, otsustab Spark klastri põhjal.

  • Ilma arvu vaheseinteta:

val sample = sc.parallelize(Array(1, 2, 3, 4, 5))

  • Mitme vaheseinaga:

val sample = sc.parallelize(List(1, 2, 3, 4, 5), 3)

3. Olemasoleva RDD ümberkujundamine

RDD kaudu tehakse kahte tüüpi toiminguid.

  1. Muundumised
  2. Tegevused

Teisendused on RDD-s tehtavad toimingud, mille tulemuseks on uue RDD loomine, samas kui toimingud on toimingud, mis tagastavad draiveriprogrammile lõppväärtuse või kirjutavad andmed välisele salvestussüsteemile. Kaart ja filter on mõned ümberkujundamise toimingud. Mõelge näiteks mõne faili tekstifailist välja filtreerimise näitele. Esialgu luuakse RDD tekstifaili laadimisega. Siis rakendame filtrifunktsiooni, mis filtreerib tekstifailist rea read. Tulemuseks on ka RDD. Filtri toiming ei muuda olemasolevat sisend-RDD-d. Selle asemel tagastab osuti täiesti uuele RDD-le, mille vead on punased. Sisend-RDD-d saame endiselt kasutada muude arvutuste jaoks.

val inputRDD = sc.textFile("log.txt")val errorsRDD = inputRDD.filter(line => line.contains("error"))

Allpool toodud näide näitab sama teisenduskontseptsiooni kaardifunktsiooni jaoks. Tulemuseks on RDD, mis on loodud kaardi funktsiooni tõttu. Kaarditoimingus määratletakse loogika ja seda konkreetset loogikat rakendatakse kõigile andmestiku elementidele.

val inputRDD = sc.parallelize(List(10, 9, 8, 7, 6, 5))val resultRDD = inputRDD.map(y => y * y)println(resultRDD.collect().mkString(", "))

Olulised punktid, mida meeles pidada

  • Kõigi praegu saadaolevate raamistike hulgast on Apache säde uusim ja kogub populaarsust oma ainulaadsete omaduste ja lihtsa lähenemise tõttu. See kõrvaldab kõik Hadoopi tekitatavad miinused ning säilitab MapReduce'i tõrketaluvuse ja mastaapsuse omadused. Nende eesmärkide saavutamiseks tutvustab sädeplatvorm TTA mõistet.
  • RDD saab luua peamiselt kolmel viisil, kus andmestiku laadimisel on kõige põhilisem.
  • Paralleelmeetod on laialt levinud ainult katsetamiseks ja õppimiseks.
  • Ümberkujundamise tulemus oleks RDD.

Soovitatavad artiklid

See on Sparkis olnud RDD juhend. Siin oleme arutanud ka erinevaid RDD loomise viise, kuidas käivitada Spark-Shell koos oluliste punktidega. Lisateavet leiate ka meie antud artiklitest -

  1. Mis on RDD?
  2. Kuidas installida säde
  3. Sädeme voogesitus
  4. Spark DataFrame
  5. Mis on Spark Shelli käsud?
  6. Unixi kesta käskude loendi juhend

Kategooria: