Tutorial Spark GraphX ​​- Analisis Graf Di Apache Spark



Blog Tutorial GraphX ​​ini akan memperkenalkan anda kepada Apache Spark GraphX, ciri dan komponennya termasuk projek Analisis Data Penerbangan.

GrafikX adalah API Apache Spark untuk grafik dan pengiraan selari grafik. GraphX ​​menyatukan proses ETL (Extract, Transform & Load), analisis eksploratori dan pengiraan grafik berulang dalam satu sistem. Penggunaan grafik dapat dilihat pada rakan Facebook, sambungan LinkedIn, penghala internet, hubungan antara galaksi dan bintang dalam astrofizik dan Peta Google. Walaupun konsep pengiraan grafik nampaknya sangat sederhana, penerapan grafik secara harfiah tidak terbatas dengan kes penggunaan dalam sistem pengesanan bencana, perbankan, pasaran saham, perbankan dan geografi untuk beberapa.Mempelajari penggunaan API ini adalah bahagian penting dari .Melalui blog ini, kita akan mempelajari konsep Spark GraphX, ciri dan komponennya melalui contoh dan melalui kes penggunaan lengkap Flight Data Analytics menggunakan GraphX.

Kami akan merangkumi topik berikut dalam blog Spark GraphX ​​ini:





  1. Apa itu Grafik?
  2. Gunakan Kes Pengiraan Graf
  3. Apa itu Spark GraphX?
  4. Ciri Spark GraphX
  5. Memahami GraphX ​​dengan Contoh
  6. Use Case - Analisis Data Penerbangan menggunakan GraphX

Apa itu Grafik?

Graf adalah struktur matematik berjumlah satu set objek di mana beberapa pasang objek berkaitan dalam beberapa arti. Hubungan ini dapat diwakili dengan menggunakan tepi dan bucu membentuk grafik. Bucu mewakili objek dan tepi menunjukkan pelbagai hubungan antara objek tersebut.

Konsep Grafik - Tutorial Spark GraphX ​​- EdurekaGambar: Tutorial Spark GraphX ​​- Vertices, tepi dan triplet dalam grafik



Dalam sains komputer, grafik adalah jenis data abstrak yang dimaksudkan untuk menerapkan konsep grafik yang tidak diarahkan dan konsep grafik yang diarahkan dari matematik, khususnya bidang teori grafik. Struktur data grafik juga mungkin berkaitan dengan setiap tepi nilai tepi , seperti label simbolik atau atribut numerik (kos, kapasiti, panjang,dan lain-lain.).

Gunakan Kes Pengiraan Graf

Kes penggunaan berikut memberikan perspektif dalam pengiraan grafik dan skop lebih jauh untuk melaksanakan penyelesaian lain menggunakan grafik.

  1. Sistem Pengesanan Bencana

    Grafik boleh digunakan untuk mengesan bencana seperti taufan, gempa bumi, tsunami, kebakaran hutan dan gunung berapi sehingga dapat memberi peringatan untuk memberi amaran kepada orang.



  2. Kedudukan Halaman Page Rank dapat digunakan dalam mencari influencer dalam rangkaian apa pun seperti jaringan kutipan kertas atau jaringan media sosial.
  3. Pengesanan Penipuan Kewangan

    Analisis grafik boleh digunakan untuk memantau transaksi kewangan dan mengesan orang yang terlibat dalam penipuan kewangan dan pengubahan wang haram.

  4. Analisis bisnes

    Grafik, apabila digunakan bersama dengan Pembelajaran Mesin, membantu memahami tren pembelian pelanggan. Cth. Uber, McDonald's, dll.

  5. Sistem Maklumat Geografi

    Grafik digunakan secara intensif untuk mengembangkan fungsi sistem maklumat geografi seperti persempadanan DAS dan ramalan cuaca.

    apakah kaedah maya
  6. Google Pregel

    Pregel adalah platform Google yang boleh diskalakan dan bertolak ansur dengan API yang cukup fleksibel untuk menyatakan grafik sewenang-wenangnyaalgoritma.

Apa itu Spark GraphX?

GrafikX adalah Spark API untuk grafik dan pengiraan selari grafik. Ini termasuk koleksi algoritma grafik dan pembangun yang semakin meningkat untuk mempermudah tugas analisis grafik.


GraphX ​​meluaskan Spark RDD dengan Graf Harta Teragih yang Berdaya Tahan.
Grafik sifat adalah multigraf yang diarahkan yang boleh mempunyai beberapa sisi selari. Setiap pinggir dan bucu mempunyai sifat yang ditentukan pengguna yang berkaitan dengannya. Tepi selari membolehkan bergandahubungan antara bucu yang sama.

Ciri Spark GraphX

Berikut adalah ciri-ciri Spark GraphX:

  1. Kelenturan :
    Spark GraphX ​​berfungsi dengan kedua-dua graf dan pengiraan. GraphX ​​menyatukan ETL (Ekstrak, Transformasi & Beban), analisis penerokaan dan pengiraan grafik berulang dalam satu sistem. Kita dapat melihat data yang sama seperti grafik dan koleksi, mengubah dan menggabungkan grafik dengan RDD dengan cekap dan menulis algoritma grafik berulang khas menggunakan API Pregel.
  2. Kepantasan :
    Spark GraphX ​​memberikan prestasi setanding dengan sistem pemprosesan grafik terpantas terpantas. Ia setanding dengan sistem grafik terpantas sambil mengekalkan kelenturan, toleransi kesalahan dan kemudahan penggunaan Spark.
  3. Perpustakaan Algoritma yang Berkembang :
    Kita boleh memilih dari perpustakaan algoritma grafik yang semakin meningkat yang ditawarkan oleh Spark GraphX. Beberapa algoritma yang popular adalah peringkat halaman, komponen yang disambungkan, penyebaran label, SVD ++, komponen yang sangat disambungkan dankiraan segitiga.

Memahami GraphX ​​dengan Contoh

Kita sekarang akan memahami konsep Spark GraphX ​​menggunakan contoh. Mari kita pertimbangkan grafik sederhana seperti yang ditunjukkan dalam gambar di bawah.

Gambar: Tutorial Spark GraphX ​​- Contoh Graf

Melihat grafik, kita dapat mengekstrak maklumat mengenai orang-orang (bucu) dan hubungan antara mereka (tepi). Grafik di sini mewakili pengguna Twitter dan yang mereka ikuti di Twitter. Contohnya Bob mengikuti Davide dan Alice di Twitter.

Mari kita melaksanakan yang sama menggunakan Apache Spark. Pertama, kami akan mengimport kelas yang diperlukan untuk GraphX.

// Mengimport kelas yang diperlukan import org.apache.spark._ import org.apache.spark.rdd.RDD import org.apache.spark.util.IntParam import org.apache.spark.graphx._ import org.apache.spark .graphx.util.GraphGenerators

Memaparkan Vertices :Selanjutnya, kami sekarang akan memaparkan semua nama dan usia pengguna (bucu).

val vertexRDD: RDD [(Long, (String, Int))] = sc.parallelize (vertexArray) val edgeRDD: RDD [Edge [Int]] = sc.parallelize (edgeArray) graf val: Graf [(String, Int), Int] = Grafik (vertexRDD, edgeRDD) graph.vertices.filter {case (id, (name, age)) => umur> 30} .collect.foreach {case (id, (name, age)) => println ( s '$ name is $ age')}

Keluaran untuk kod di atas adalah seperti di bawah:

Daudadalah42 Franadalahlima puluh Edadalah55 Charlieadalah65

Memaparkan Tepi : Mari kita perhatikan siapa yang menyukai siapa di Twitter.

untuk (triplet<- graph.triplets.collect) { println(s'${triplet.srcAttr._1} likes ${triplet.dstAttr._1}') } 

Keluaran untuk kod di atas adalah seperti di bawah:

BobsukaAlice BobsukaDaud CharliesukaBob CharliesukaFran DaudsukaAlice EdsukaBob EdsukaCharlie EdsukaFran

Sekarang setelah kita memahami asas-asas GraphX, mari kita selami sedikit lebih mendalam dan melakukan beberapa pengiraan lanjutan.

Bilangan pengikut : Setiap pengguna dalam grafik kami mempunyai bilangan pengikut yang berbeza. Marilah kita melihat semua pengikut untuk setiap pengguna.

// Mendefinisikan kelas untuk lebih jelas memodelkan kelas kes harta pengguna Pengguna (nama: String, umur: Int, inDeg: Int, outDeg: Int) // Membuat pengguna Graf val permulaanUserGraph: Graf [Pengguna, Int] = grafik. mapVertices {case (id, (name, age)) => Pengguna (nama, umur, 0, 0)} // Mengisi maklumat darjah val userGraph = initialUserGraph.outerJoinVertices (initialUserGraph.inDegrees) {case (id, u, inDegOpt) => Pengguna (u.name, u.age, inDegOpt.getOrElse (0), u.outDeg)} .outerJoinVertices (initialUserGraph.outDegrees) {case (id, u, outDegOpt) => Pengguna (nama u, u.age, u.inDeg, outDegOpt.getOrElse (0))} untuk ((id, harta tanah)<- userGraph.vertices.collect) { println(s'User $id is called ${property.name} and is liked by ${property.inDeg} people.') } 

Keluaran untuk kod di atas adalah seperti di bawah:

Pengguna satudipanggilAlicedan disukai oleh2orang. Pengguna 2dipanggilBobdan disukai oleh2orang. Pengguna 3dipanggilCharliedan disukai olehsatuorang. Pengguna 4dipanggilDauddan disukai olehsatuorang. Pengguna 5dipanggilEddan disukai oleh0orang. Pengguna 6dipanggilFrandan disukai oleh2orang.

Pengikut Tertua : Kami juga dapat menyusun pengikut mengikut ciri-ciri mereka. Marilah kita mencari pengikut tertua bagi setiap pengguna mengikut peringkat umur.

// Mencari pengikut tertua untuk setiap pengguna val tertuaFollower: VertexRDD [(String, Int)] = userGraph.mapReduceTriplets [(String, Int)] (// Untuk setiap tepi menghantar mesej ke titik tujuan dengan atribut sumber vertex edge => Iterator ((edge.dstId, (edge.srcAttr.name, edge.srcAttr.age)))), // Untuk menggabungkan mesej ambil mesej untuk pengikut yang lebih tua (a, b) => jika (a. _2> b._2) yang lain b)

Keluaran untuk kod di atas adalah seperti di bawah:

Daudadalah pengikut tertua bagiAlice. Charlieadalah pengikut tertua bagiBob. Edadalah pengikut tertua bagiCharlie. Bobadalah pengikut tertua bagiDaud. Edtidak mempunyai pengikut. Charlieadalah pengikut tertua bagiFran. 

Use Case: Analisis Data Penerbangan menggunakan Spark GraphX

Setelah kita memahami konsep inti Spark GraphX, mari kita selesaikan masalah kehidupan sebenar menggunakan GraphX. Ini akan memberi kita keyakinan untuk bekerja pada sebarang projek Spark pada masa akan datang.

Pernyataan masalah : Untuk menganalisis data Penerbangan Masa Nyata menggunakan Spark GraphX, sediakan hasil pengiraan masa nyata dan gambarkan hasilnya menggunakan Google Data Studio.

Use Case - Pengiraan yang perlu dilakukan :

alat yang digunakan dalam analisis data besar
  1. Hitung jumlah laluan penerbangan
  2. Hitung dan susun laluan penerbangan terpanjang
  3. Paparkan lapangan terbang dengan titik tertinggi
  4. Senaraikan lapangan terbang paling penting mengikut PageRank
  5. Senaraikan laluan dengan kos penerbangan terendah

Kami akan menggunakan Spark GraphX ​​untuk pengiraan di atas dan memvisualisasikan hasilnya menggunakan Google Data Studio.

Use Case - Dataset :

Gambar: Use Case - Kumpulan Data Penerbangan USA

Use Case - Flow Diagram :

Ilustrasi berikut menerangkan dengan jelas semua langkah yang terlibat dalam Analisis Data Penerbangan kami.

Gambar: Use Case - Flow diagram Analisis Data Penerbangan menggunakan Spark GraphX

apa itu kacang di jawa

Kes Penggunaan - Pelaksanaan Spark :

Melangkah ke hadapan, sekarang mari kita laksanakan projek kami menggunakan Eclipse IDE for Spark.

Cari Kod Pseudo di bawah:

// Mengimport kelas yang diperlukan mengimport org.apache.spark._ ... mengimport java.io.File objek lapangan terbang {def main (args: Array [String]) {// Membuat Kelas Kelas Kes kelas Penerbangan Penerbangan (dofM: String, dofW: String, ..., dist: Int) // Mendefinisikan fungsi Parse String untuk menguraikan input ke dalam Kelas penerbangan def parseFlight (str: String): Flight = {val line = str.split (',') Flight (baris (0), baris (1), ..., baris (16) .toInt)} val conf = SparkConf baru (). setAppName ('airport'). setMaster ('local [2]') val sc = SparkContext baru (conf) // Muatkan data ke dalam teks val RDDRDD = sc.textFile ('/ home / edureka / usecases / airport / airportdataset.csv') // Uraikan garis RDD CSV ke dalam RDD kelas penerbangan val flightRDD = Map ParseFlight to Text RDD // Buat lapangan terbang RDD dengan ID dan Nama lapangan terbang val = Peta Penerbangan OriginID dan Origin airport.take (1) // Mendefinisikan titik lalai yang tidak disebut tempat dan memetakan ID Lapangan terbang untuk printlns val nowhere = 'nowhere' val airportMap = Gunakan Fungsi Peta .collect.toList.toMap // Buat laluan RDD dengan sourceID, destinationID dan jarak jarak laluan = penerbanganRDD. Gunakan Peta Fungsi .distinct route.take (2) // Buat tepi RDD dengan sourceID, destinationID dan jarak val tepi = route.map {(Map OriginID dan DestinationID) => Edge (org_id.toLong, dest_id.toLong, jarak)} edges.take (1) // Tentukan grafik dan paparkan beberapa titik dan sudut val grafik = Graf (Lapangan terbang, Tepi dan Tempat) grafik.vertices.take (2) graph.edges.take (2) // Query 1 - Find jumlah lapangan terbang val numairports = Nombor Vertices // Pertanyaan 2 - Hitung jumlah laluan? val numroutes = Number Of Edges // Query 3 - Hitung laluan tersebut dengan jarak lebih dari 1000 batu graf.edges.filter {Dapatkan jarak tepi) => jarak> 1000}. ambil (3) // Sama juga tuliskan kod Scala untuk di bawah pertanyaan // Pertanyaan 4 - Susun dan cetak laluan terpanjang // Pertanyaan 5 - Paparkan titik darjah tertinggi untuk penerbangan masuk dan keluar lapangan terbang // Pertanyaan 6 - Dapatkan nama lapangan terbang dengan ID 10397 dan 12478 // Pertanyaan 7 - Cari lapangan terbang dengan penerbangan masuk paling tinggi // Pertanyaan 8 - Cari lapangan terbang dengan penerbangan keluar tertinggi // Pertanyaan 9 - Cari lapangan terbang paling penting mengikut HalamanRank // Pertanyaan 10 - Susun lapangan terbang mengikut kedudukan // Pertanyaan 11 - Paparkan paling banyak lapangan terbang penting // Pertanyaan 12 - Cari Laluan dengan kos penerbangan terendah // Pertanyaan 13 - Cari lapangan terbang dan kos penerbangan terendah mereka // Pertanyaan 14 - Paparkan kod lapangan terbang bersama dengan kos penerbangan terendah yang disusun

Kes Penggunaan - Memvisualisasikan Hasil :

Kami akan menggunakan Google Data Studio untuk memvisualisasikan analisis kami. Google Data Studio adalah produk di bawah Google Analytics 360 Suite. Kami akan menggunakan perkhidmatan Peta Geo untuk memetakan Lapangan Terbang di lokasi masing-masing di peta AS dan memaparkan kuantiti metrik.

  1. Tunjukkan jumlah penerbangan setiap Lapangan Terbang
  2. Paparkan jumlah metrik laluan Destinasi dari setiap Lapangan Terbang
  3. Paparkan jumlah kelewatan semua penerbangan setiap Lapangan Terbang

Sekarang, ini menyimpulkan blog Spark GraphX. Saya harap anda seronok membacanya dan menganggapnya bermaklumat. Lihat blog seterusnya dalam siri Apache Spark kami di untuk menjadi pasaran bersedia di Apache Spark.

Kami mengesyorkan perkara berikut Latihan Apache Spark | Video Analisis Data Penerbangan dari Edureka untuk bermula dengan:

Latihan Apache Spark | Analisis Data Penerbangan Spark GraphX ​​| Edureka

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda secepat mungkin.

Sekiranya anda ingin mempelajari Spark dan membina karier dalam domain Spark dan membina kepakaran untuk melakukan Pemprosesan Data berskala besar menggunakan RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​dan Scala dengan kes penggunaan Kehidupan Nyata, lihat interaktif kami secara langsung -sekarang di sini, yang disertakan dengan sokongan 24 * 7 untuk membimbing anda sepanjang tempoh pembelajaran anda.