Водич за Спарк ГрапхКс - Графичка аналитика у Апацхе Спарк-у



Овај блог водича ГрапхКс-а упознаће вас са Апацхе Спарк ГрапхКс-ом, његовим карактеристикама и компонентама, укључујући пројекат анализе података о лету.

ГрапхКс је АПИ Апацхе Спарк-а за графиконе и графички паралелно рачунање. ГрапхКс обједињује ЕТЛ (Ектрацт, Трансформ & Лоад) процес, истраживачку анализу и итеративно израчунавање графова у оквиру једног система. Употреба графикона може се видети у Фацебоок-овим пријатељима, ЛинкедИн-овим везама, интернет рутерима, односима између галаксија и звезда у астрофизици и Гооглеовим мапама. Иако се чини да је концепт израчунавања графова врло једноставан, примена графова је буквално неограничена са случајевима коришћења у откривању катастрофа, банкарству, берзи, банкарским и географским системима и само неке од њих.Учење употребе овог АПИ-ја је важан део .Кроз овај блог научићемо концепте Спарк ГрапхКс-а, његове карактеристике и компоненте кроз примере и проћи ћемо кроз комплетан случај употребе Флигхт Дата Аналитицс користећи ГрапхКс.

На овом блогу Спарк ГрапхКс обрађиваћемо следеће теме:





  1. Шта су Графикони?
  2. Користите случајеве рачунања графикона
  3. Шта је Спарк ГрапхКс?
  4. Спарк ГрапхКс карактеристике
  5. Разумевање ГрапхКс-а са примерима
  6. Случај употребе - Анализа података лета помоћу ГрапхКс-а

Шта су Графикони?

Графикон је математичка структура која се састоји од скупа објеката у којима су неки парови предмета повезани у неком смислу. Ови односи се могу представити помоћу ивица и темена који чине графикон. Врхови представљају објекте, а ивице приказују различите односе између тих објеката.

Графички концепти - Водич за Спарк ГрапхКс - ЕдурекаФигура: Водич за Спарк ГрапхКс - Врхови, ивице и тројке у графиконима



У рачунарским наукама, граф је апстрактни тип података који треба да примени усмерени граф и усмерене концепте графа из математике, посебно у области теорије графова. Структура података графа такође може придружити свакој ивици неке ивична вредност , као што су симболична налепница или нумерички атрибут (цена, капацитет, дужина,итд.).

Користите случајеве рачунања графикона

Следећи примери употребе дају перспективу израчунавању графова и даљи опсег за примену других решења помоћу графова.

  1. Систем за откривање катастрофа

    Графикони се могу користити за откривање катастрофа као што су урагани, земљотреси, цунами, шумски пожари и вулкани како би се пружила упозорења да се људи упозоре.



  2. Паге Ранк Паге Ранк се може користити у проналажењу утицаја у било којој мрежи као што је мрежа за цитирање папира или мрежа друштвених медија.
  3. Откривање финансијске преваре

    Анализа графикона може се користити за праћење финансијских трансакција и откривање људи умешаних у финансијске преваре и прање новца.

  4. Анализа пословања

    Графикони, када се користе заједно са машинским учењем, помажу у разумевању трендова куповине купаца. На пример. Убер, МцДоналд’с итд.

  5. Географски информациони системи

    Графикони се интензивно користе за развијање функционалности на географским информационим системима попут размеђивања слива и предвиђања времена.

  6. Гоогле Прегел

    Прегел је Гоогле-ова скалабилна и отпорна на грешке платформа са АПИ-јем који је довољно флексибилан да изрази произвољан графиконалгоритми.

Шта је Спарк ГрапхКс?

ГрапхКс је Спарк АПИ за графове и графички паралелно рачунање. Укључује све већу колекцију алгоритама графова и креатора за поједностављивање задатака аналитике графова.

шта је најбоље јава иде


ГрапхКс проширује Спарк РДД са еластичним распоређеним графом својстава.
Графикон својстава је усмерени мултиграф који може имати више ивица паралелно. Свака ивица и врх имају са собом повезана кориснички дефинисана својства. Паралелне ивице омогућавају вишеструкоодноси између истих темена.

Спарк ГрапхКс карактеристике

Следе карактеристике Спарк ГрапхКс-а:

  1. Флексибилност :
    Спарк ГрапхКс ради и са графиконима и са прорачунима. ГрапхКс обједињује ЕТЛ (Ектрацт, Трансформ & Лоад), истраживачку анализу и итеративно израчунавање графова у оквиру једног система. Можемо прегледати исте податке као и графикони и колекције, ефикасно трансформисати и спојити графиконе са РДД-има и писати прилагођене итеративне алгоритме графикона користећи Прегел АПИ.
  2. Брзина :
    Спарк ГрапхКс пружа упоредиве перформансе најбржим специјализованим системима за обраду графова. Упоредив је са најбржим системима графова уз задржавање флексибилности, толеранције грешака и лакоће употребе.
  3. Растућа библиотека алгоритама :
    Можемо бирати из растуће библиотеке графичких алгоритама које Спарк ГрапхКс нуди. Неки од популарних алгоритама су ранг странице, повезане компоненте, ширење ознака, СВД ++, чврсто повезане компоненте иброј троугла.

Разумевање ГрапхКс-а са примерима

Сада ћемо разумети концепте Спарк ГрапхКс-а на примеру. Размотримо једноставан графикон као што је приказано на доњој слици.

Фигура: Водич за Спарк ГрапхКс - Пример графикона

Гледајући графикон, можемо извући информације о људима (темена) и односима између њих (ивице). Графикон овде представља кориснике Твиттера и кога прате на Твиттеру. Јер нпр. Боб прати Давидеа и Алице на Твиттеру.

Применимо исто користећи Апацхе Спарк. Прво ћемо увести потребне класе за ГрапхКс.

// Увоз потребних класа импорт орг.апацхе.спарк._ импорт орг.апацхе.спарк.рдд.РДД импорт орг.апацхе.спарк.утил.ИнтПарам импорт орг.апацхе.спарк.грапхк._ импорт орг.апацхе.спарк .грапхк.утил.ГрапхГенераторс

Приказ врхова :Даље, сада ћемо приказати сва имена и узрасте корисника (темена).

методе класе скенера у јави
вал вертекРДД: РДД [(Лонг, (Стринг, Инт))] = сц.параллелизе (вертекАрраи) вал едгеРДД: РДД [Едге [Инт]] = сц.параллелизе (едгеАрраи) вал граф: Графикон [(Стринг, Инт), Инт] = Графикон (вертекРДД, едгеРДД) грапх.вертицес.филтер {цасе (ид, (наме, аге)) => аге> 30} .цоллецт.фореацх {цасе (ид, (наме, аге)) => принтлн ( с '$ наме ис $ аге')}

Излаз за горњи код је следећи:

Давидје42 Франјепедесет Едје55 Цхарлиеје65

Приказивање ивица : Погледајмо која особа коме се свиђа на Твиттеру.

фор (триплет<- graph.triplets.collect) { println(s'${triplet.srcAttr._1} likes ${triplet.dstAttr._1}') } 

Излаз за горњи код је следећи:

БобсвиђаАлице БобсвиђаДавид ЦхарлиесвиђаБоб ЦхарлиесвиђаФран ДавидсвиђаАлице ЕдсвиђаБоб ЕдсвиђаЦхарлие ЕдсвиђаФран

Сад кад смо разумели основе ГрапхКс-а, заронимо мало дубље и извршимо напредна израчунавања на истом.

Број пратилаца : Сваки корисник на нашем графикону има различит број следбеника. Погледајмо све следбенике за сваког корисника.

// Дефинисање класе ради јаснијег моделирања класе корисничког својства усер Усер (име: Стринг, узраст: Инт, инДег: Инт, оутДег: Инт) // Креирање корисника Грапх вал ИнитиУсерГрапх: Грапх [Усер, Инт] = грапх. мапВертицес {цасе (ид, (наме, аге)) => Усер (наме, аге, 0, 0)} // Попуњавање података о степену вал усерГрапх = ИнитиалУсерГрапх.оутерЈоинВертицес (инитиалУсерГрапх.инДегреес) {цасе (ид, у, инДегОпт) => Корисник (у.наме, у.аге, инДегОпт.гетОрЕлсе (0), у.оутДег)} .оутерЈоинВертицес (инитиалУсерГрапх.оутДегреес) {цасе (ид, у, оутДегОпт) => Усер (у.наме, у.аге, у.инДег, оутДегОпт.гетОрЕлсе (0))} за ((ид, својство)<- userGraph.vertices.collect) { println(s'User $id is called ${property.name} and is liked by ${property.inDeg} people.') } 

Излаз за горњи код је следећи:

Корисник једансе зовеАлицеи свиђа му се2људи. Корисник 2се зовеБоби свиђа му се2људи. Корисник 3се зовеЦхарлиеи свиђа му сеједанљуди. Корисник 4се зовеДавиди свиђа му сеједанљуди. Корисник 5се зовеЕди свиђа му се0људи. Корисник 6се зовеФрани свиђа му се2људи.

Најстарији следбеници : Такође можемо да сортирамо следбенике према њиховим карактеристикама. Пронађимо најстарије следбенике сваког корисника по годинама.

// Проналажење најстаријег следбеника за сваког корисника вал најстаријиФолловер: ВертекРДД [(Стринг, Инт)] = усерГрапх.мапРедуцеТриплетс [(Стринг, Инт)] (// За сваку ивицу пошаљите поруку у одредишни врх са атрибутом извора вертек едге => Итератор ((едге.дстИд, (едге.срцАттр.наме, едге.срцАттр.аге)))), // За комбиновање порука узмите поруку за старијег следбеника (а, б) => иф (а. _2> б._2) а друго б)

Излаз за горњи код је следећи:

Давидје најстарији следбеникАлице. Цхарлиеје најстарији следбеникБоб. Едје најстарији следбеникЦхарлие. Бобје најстарији следбеникДавид. Еднема следбенике. Цхарлиеје најстарији следбеникФран. 

Случај употребе: Анализа података о лету помоћу Спарк ГрапхКс-а

Сада када смо разумели основне концепте Спарк ГрапхКс-а, решимо стварни проблем користећи ГрапхКс. То ће нам пружити самопоуздање за рад на било ком Спарк пројекту у будућности.

Изјава о проблему : Да бисте анализирали податке о лету у реалном времену помоћу Спарк ГрапхКс-а, пружите резултате израчунавања у скоро реалном времену и визуализујте резултате помоћу Гоогле Дата Студио-а.

Случај употребе - Израчунавање које треба обавити :

  1. Израчунајте укупан број летачких рута
  2. Израчунајте и сортирајте најдуже руте лета
  3. Прикажите аеродром са врхом највишег степена
  4. Наведите најважније аеродроме према ПагеРанк-у
  5. Наведите руте са најнижим трошковима лета

Користићемо Спарк ГрапхКс за горња израчунавања и визуализовати резултате помоћу Гоогле Дата Студио-а.

Случај употребе - скуп података :

Фигура: Случај употребе - САД Флигхт Датасет

Случај употребе - дијаграм тока :

Следећа илустрација јасно објашњава све кораке који су укључени у нашу анализу података о лету.

Фигура: Случај употребе - Дијаграм тока анализе података о лету користећи Спарк ГрапхКс

Случај употребе - Примена варнице :

иф израз у скл упиту

Напредујући, сада ћемо имплементирати наш пројекат користећи Ецлипсе ИДЕ за Спарк.

Пронађите псеудо код испод:

// Увоз потребних класа импорт орг.апацхе.спарк._ ... импорт јава.ио.Филе објецт аирпорт {деф маин (аргс: Арраи [Стринг]) {// Креирање Цасе Цласс Флигхт цасе цласс Флигхт (дофМ: Стринг, дофВ: Стринг, ..., дист: Инт) // Дефинисање функције Парсе Стринг за рашчлањивање уноса у класу Флигхт деф парсеФлигхт (стр: Стринг): Флигхт = {вал лине = стр.сплит (',') Флигхт (линија (0), линија (1), ..., линија (16) .тоИнт)} вал цонф = нев СпаркЦонф (). сетАппНаме ('аеродром'). сетМастер ('лоцал [2]') вал сц = нови СпаркЦонтект (цонф) // Учитај податке у РДД вал тектРДД = сц.тектФиле ('/ хоме / едурека / усецасес / аирпорт / аирпортдатасет.цсв') // Рашчланите РДД ЦСВ линија у РДД класе лета вал ФлигхтсРДД = Мапирајте ПарсеФлигхт у текст РДД // Створите РДД аеродрома са ИД-ом и именом вал аирпортс = Мап Флигхт ОригинИД и Оригин аирпортс.таке (1) // Дефинисање подразумеваног врха који се зове нигде и мапирање ИД-а аеродрома за принтлнс вал новхере = 'нигде' вал аирпортМап = Користи функцију мапе .цоллецт.тоЛист.тоМап // Креирање рута РДД са соурцеИД, одредиштем ид и раздаљином вал рута = летовиРДД. Користите функцију карте .дистинцт роутес.таке (2) // Креирајте РДД ивица са ИД-ом извора, одредиштем и раздаљином вал едге = роутес.мап {(Мап ОригинИД анд ДестинатионИД) => Едге (орг_ид.тоЛонг, дест_ид.тоЛонг, дистанце)} едге.таке (1) // Дефинишите граф и прикажите неке врхове и ивице вал грапх = Графикон (Аеродроми, рубови и нигде) грапх.вертицес.таке (2) грапх.едгес.таке (2) // Упит 1 - Пронађи укупан број аеродрома вал нумаирпортс = Број врхова // Упит 2 - Израчунати укупан број рута? вал нумроутес = Нумбер оф Едгес // Упит 3 - Израчунајте оне руте са удаљеностима већим од 1000 миља грапх.едгес.филтер {Набавите ивичну удаљеност) => дистанце> 1000} .таке (3) // Слично напишите Сцала код за доле упити // Упит 4 - Сортирање и испис најдужих рута // Упит 5 - Приказивање врхова највишег степена за долазне и одлазне летове аеродрома // Упит 6 - Набавите назив аеродрома са ИД-овима 10397 и 12478 // Упит 7 - Пронађите аеродром са највише долазних летова // Упит 8 - Пронађите аеродром са највише одлазних летова // Упит 9 - Пронађите најважније аеродроме према ПагеРанк // Упит 10 - Сортирајте аеродроме по рангирању // Упит 11 - Прикажите највише важни аеродроми // Упит 12 - Пронађите руте са најнижим трошковима лета // Упит 13 - Пронађите аеродроме и њихове најниже трошкове лета // Упит 14 - Прикажите аеродромске кодове уз сортиране најниже трошкове лета

Случај употребе - Визуализација резултата :

Користићемо Гоогле Дата Студио за визуализацију наше анализе. Гоогле Дата Студио је производ под Гоогле Аналитицс 360 Суите. Користићемо услугу Гео Мап за мапирање аеродрома на одговарајућим локацијама на мапи САД-а и приказивање количине показатеља.

  1. Прикажите укупан број летова по аеродрому
  2. Прикажите метрички збир одредишних рута са сваког аеродрома
  3. Прикажите укупно кашњење свих летова по аеродрому

Сада је ово закључило Спарк ГрапхКс блог. Надам се да сте уживали у читању и да вам је било информативно. Погледајте следећи блог у нашој серији Апацхе Спарк да постанете спремни за тржиште у Апацхе Спарк-у.

Препоручујемо следеће Апацхе Спарк Траининг | Видео за анализу података о лету од Едуреке за почетак:

Апацхе Спарк Траининг | Анализа података о лету Спарк ГрапхКс | Едурека

Имате питање за нас? Молимо вас да то споменете у одељку за коментаре и јавићемо вам се најраније.

Ако желите да научите Спарк и изградите каријеру у домену Спарк-а и изградите стручност за обављање велике обраде података помоћу РДД-а, Спарк Стреаминг-а, СпаркСКЛ-а, МЛлиб-а, ГрапхКс-а и Сцале-е са случајевима примене из стварног живота, погледајте наше интерактивне, уживо -онлине овде, која долази са подршком 24 * 7 која ће вас водити током читавог периода учења.