Tutorial Grafik Spark - Analisis Grafik Di Apache Spark



Blog Tutorial GraphX ​​ini akan memperkenalkan Anda pada Apache Spark GraphX, fitur dan komponennya termasuk proyek Analisis Data Penerbangan.

GraphX adalah API Apache Spark untuk grafik dan komputasi paralel-grafik. GraphX ​​menyatukan proses ETL (Ekstrak, Transformasi & Muat), analisis eksplorasi, dan komputasi grafik berulang dalam satu sistem. Penggunaan grafik dapat dilihat di teman Facebook, koneksi LinkedIn, router internet, hubungan antara galaksi dan bintang dalam astrofisika dan Google Maps. Meskipun konsep komputasi grafik tampaknya sangat sederhana, aplikasi grafik secara harfiah tidak terbatas dengan kasus penggunaan dalam deteksi bencana, perbankan, pasar saham, perbankan dan sistem geografis hanya untuk beberapa nama.Mempelajari penggunaan API ini merupakan bagian penting dari .Melalui blog ini, kita akan mempelajari konsep Spark GraphX, fitur dan komponennya melalui contoh dan melalui kasus penggunaan lengkap dari Flight Data Analytics menggunakan GraphX.

Kami akan membahas topik-topik berikut di blog Spark GraphX ​​ini:





  1. Apa itu Grafik?
  2. Gunakan Kasus Komputasi Grafik
  3. Apa itu Spark GraphX?
  4. Fitur Spark GraphX
  5. Memahami GraphX ​​dengan Contoh
  6. Use Case - Analisis Data Penerbangan menggunakan GraphX

Apa itu Grafik?

Grafik adalah struktur matematika yang berjumlah sekumpulan objek di mana beberapa pasang objek terkait dalam beberapa pengertian. Relasi ini dapat direpresentasikan menggunakan edge dan vertices yang membentuk grafik. Simpul mewakili objek dan ujungnya menunjukkan berbagai hubungan antara objek tersebut.

Konsep Grafik - Tutorial Spark GraphX ​​- EdurekaAngka: Tutorial Spark GraphX ​​- Simpul, tepi, dan triplet dalam grafik



Dalam ilmu komputer, graf merupakan jenis data abstrak yang dimaksudkan untuk mengimplementasikan konsep graf tak berarah dan graf berarah dari matematika, khususnya bidang teori graf. Sebuah struktur data grafik juga dapat dikaitkan dengan beberapa sisi nilai tepi , seperti label simbolik atau atribut numerik (biaya, kapasitas, panjang,dll.).

tanggal tipe data dalam contoh sql

Gunakan Kasus Komputasi Grafik

Kasus penggunaan berikut memberikan perspektif tentang komputasi grafik dan cakupan lebih lanjut untuk mengimplementasikan solusi lain menggunakan grafik.

  1. Sistem Deteksi Bencana

    Grafik dapat digunakan untuk mendeteksi bencana seperti angin topan, gempa bumi, tsunami, kebakaran hutan dan gunung berapi sehingga dapat memberikan peringatan kepada masyarakat.



  2. Peringkat halaman Page Rank dapat digunakan untuk menemukan influencer di jaringan apa pun seperti jaringan kutipan kertas atau jaringan media sosial.
  3. Deteksi Penipuan Keuangan

    Analisis grafik dapat digunakan untuk memantau transaksi keuangan dan mendeteksi orang-orang yang terlibat dalam penipuan keuangan dan pencucian uang.

  4. Analisa bisnis

    Grafik, saat digunakan bersama Machine Learning, membantu memahami tren pembelian pelanggan. Misalnya. Uber, McDonald's, dll.

  5. Sistem Informasi Geografis

    Grafik secara intensif digunakan untuk mengembangkan fungsi pada sistem informasi geografis seperti deliniasi DAS dan prediksi cuaca.

  6. Google Pregel

    Pregel adalah platform Google yang dapat diskalakan dan toleran terhadap kesalahan dengan API yang cukup fleksibel untuk mengekspresikan grafik arbitreralgoritma.

Apa itu Spark GraphX?

GraphX adalah Spark API untuk grafik dan komputasi grafik-paralel. Ini mencakup kumpulan algoritme dan pembuat grafik yang terus bertambah untuk menyederhanakan tugas analitik grafik.


GraphX ​​memperluas Spark RDD dengan Grafik Properti Terdistribusi Tangguh.
Grafik properti adalah multigraph terarah yang dapat memiliki banyak sisi secara paralel. Setiap edge dan vertex memiliki properti yang ditentukan pengguna yang terkait dengannya. Tepi paralel memungkinkan banyakhubungan antara simpul yang sama.

Fitur Spark GraphX

Berikut ini adalah fitur-fitur Spark GraphX:

  1. Fleksibilitas :
    Spark GraphX ​​bekerja dengan grafik dan perhitungan. GraphX ​​menyatukan ETL (Ekstrak, Transformasi & Muat), analisis eksplorasi dan komputasi grafik berulang dalam satu sistem. Kita dapat melihat data yang sama sebagai grafik dan koleksi, mengubah dan menggabungkan grafik dengan RDD secara efisien dan menulis algoritma grafik iteratif khusus menggunakan API Pregel.
  2. Kecepatan :
    Spark GraphX ​​memberikan kinerja yang sebanding dengan sistem pemrosesan grafik khusus tercepat. Ini sebanding dengan sistem grafik tercepat dengan tetap mempertahankan fleksibilitas Spark, toleransi kesalahan dan kemudahan penggunaan.
  3. Perpustakaan Algoritma yang Berkembang :
    Kami dapat memilih dari pustaka algoritme grafik yang terus berkembang yang ditawarkan oleh Spark GraphX. Beberapa algoritme yang populer adalah peringkat halaman, komponen terhubung, propagasi label, SVD ++, komponen yang terhubung kuat, danjumlah segitiga.

Memahami GraphX ​​dengan Contoh

Kami sekarang akan memahami konsep Spark GraphX ​​menggunakan sebuah contoh. Mari kita perhatikan grafik sederhana seperti yang ditunjukkan pada gambar di bawah ini.

Angka: Tutorial Spark GraphX ​​- Contoh Grafik

Melihat grafik, kita dapat mengekstrak informasi tentang orang (simpul) dan hubungan di antara mereka (tepi). Grafik di sini mewakili pengguna Twitter dan yang mereka ikuti di Twitter. Untuk mis. Bob mengikuti Davide dan Alice di Twitter.

Mari kita terapkan hal yang sama menggunakan Apache Spark. Pertama, kami akan mengimpor kelas yang diperlukan untuk GraphX.

// Mengimpor 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

Menampilkan Vertices :Selanjutnya, kami sekarang akan menampilkan semua nama dan usia pengguna (simpul).

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

Output dari kode diatas adalah sebagai berikut:

Davidaku s42 Franaku slima puluh Edaku s55 Charlieaku s65

Menampilkan Tepi : Mari kita lihat siapa yang suka siapa di Twitter.

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

Output dari kode diatas adalah sebagai berikut:

BobsukaAlice BobsukaDavid CharliesukaBob CharliesukaFran DavidsukaAlice EdsukaBob EdsukaCharlie EdsukaFran

Sekarang kita telah memahami dasar-dasar GraphX, mari kita selami sedikit lebih dalam dan melakukan beberapa komputasi lanjutan yang sama.

Jumlah pengikut : Setiap pengguna di grafik kami memiliki jumlah pengikut yang berbeda. Mari kita lihat semua pengikut untuk setiap pengguna.

// Mendefinisikan kelas agar lebih jelas memodelkan kelas kasus properti pengguna User (name: String, age: Int, inDeg: Int, outDeg: Int) // Membuat Grafik pengguna val initialUserGraph: Graph [User, Int] = graph. mapVertices {case (id, (name, age)) => User (name, age, 0, 0)} // Mengisi informasi derajat 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) => User (u.name, u.age, u.inDeg, outDegOpt.getOrElse (0))} untuk ((id, property)<- userGraph.vertices.collect) { println(s'User $id is called ${property.name} and is liked by ${property.inDeg} people.') } 

Output dari kode diatas adalah sebagai berikut:

Pengguna satudisebutAlicedan disukai oleh2orang-orang. Pengguna 2disebutBobdan disukai oleh2orang-orang. Pengguna 3disebutCharliedan disukai olehsatuorang-orang. Pengguna 4disebutDaviddan disukai olehsatuorang-orang. Pengguna 5disebutEddan disukai oleh0orang-orang. Pengguna 6disebutFrandan disukai oleh2orang-orang.

Pengikut Tertua : Kami juga dapat mengurutkan pengikut berdasarkan karakteristik mereka. Mari kita temukan pengikut terlama dari setiap pengguna berdasarkan usia.

// Menemukan pengikut terlama untuk setiap pengguna dengan pengikut terlama: VertexRDD [(String, Int)] = userGraph.mapReduceTriplets [(String, Int)] (// Untuk setiap tepi, kirim pesan ke simpul tujuan dengan atribut sumber vertex edge => Iterator ((edge.dstId, (edge.srcAttr.name, edge.srcAttr.age))), // Untuk menggabungkan pesan, ambil pesan untuk pengikut yang lebih tua (a, b) => if (a. _2> b._2) a lain b)

Output dari kode diatas adalah sebagai berikut:

Davidadalah pengikut tertua diAlice. Charlieadalah pengikut tertua diBob. Edadalah pengikut tertua diCharlie. Bobadalah pengikut tertua diDavid. Edtidak memiliki pengikut. Charlieadalah pengikut tertua diFran. 

Kasus Penggunaan: Analisis Data Penerbangan menggunakan Spark GraphX

Sekarang kita telah memahami konsep inti dari Spark GraphX, mari kita selesaikan masalah kehidupan nyata menggunakan GraphX. Ini akan membantu memberi kami kepercayaan diri untuk mengerjakan proyek Spark apa pun di masa mendatang.

Pernyataan masalah : Untuk menganalisis data Penerbangan Real-Time menggunakan Spark GraphX, berikan hasil komputasi hampir real-time dan visualisasikan hasil menggunakan Google Data Studio.

Use Case - Perhitungan yang harus dilakukan :

  1. Hitung jumlah total rute penerbangan
  2. Hitung dan urutkan rute penerbangan terpanjang
  3. Tampilkan bandara dengan sudut derajat tertinggi
  4. Daftar bandara paling penting menurut PageRank
  5. Buat daftar rute dengan biaya penerbangan terendah

Kami akan menggunakan Spark GraphX ​​untuk perhitungan di atas dan memvisualisasikan hasil menggunakan Google Data Studio.

cara membuka aws cli

Kasus Penggunaan - Set Data :

Angka: Kasus Penggunaan - Set Data Penerbangan AS

Use Case - Diagram Alir :

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

Angka: Use Case - Diagram alir Analisis Data Penerbangan menggunakan Spark GraphX

Kasus Penggunaan - Implementasi Spark :

Ke depan, sekarang mari kita implementasikan proyek kita menggunakan Eclipse IDE untuk Spark.

Temukan Kode Pseudo di bawah ini:

// Mengimpor kelas yang diperlukan import org.apache.spark._ ... import java.io.File object airport {def main (args: Array [String]) {// Membuat Case Class Flight case class Flight (dofM: String, dofW: String, ..., dist: Int) // Mendefinisikan fungsi Parse String untuk mengurai input ke kelas Penerbangan def parseFlight (str: String): Flight = {val line = str.split (',') Flight (baris (0), baris (1), ..., baris (16) .toInt)} val conf = new SparkConf (). setAppName ('airport'). setMaster ('local [2]') val sc = new SparkContext (conf) // Muat data ke dalam RDD val textRDD = sc.textFile ('/ home / edureka / usecases / airport / airportdataset.csv') // Parsing RDD garis CSV menjadi RDD kelas penerbangan val flightRDD = Petakan ParseFlight ke Teks RDD // Buat bandara RDD dengan ID dan Nama val airport = Peta Flight OriginID dan Origin airports.take (1) // Mendefinisikan simpul default bernama nowhere dan memetakan Airport ID untuk printlns val nowhere = 'nowhere' val airportMap = Gunakan Fungsi Peta .collect.toList.toMap // Buat rute RDD dengan sourceID, destinationID dan distance val routes = FlightsRDD. Gunakan Fungsi Peta. Rute berbeda.take (2) // Buat tepi RDD dengan sourceID, ID tujuan, dan jarak val edge = routes.map {(Map OriginID dan DestinationID) => Edge (org_id.toLong, dest_id.toLong, jarak)} edge.take (1) // Definisikan grafik dan tampilkan beberapa simpul dan sisi val graph = Graph (Bandara, Tepi dan Tempat) graph.vertices.take (2) graph.edges.take (2) // Kueri 1 - Temukan jumlah total bandara val numairports = Nomor Simpul // Query 2 - Hitung jumlah total rute? val numroutes = Number Of Edges // Query 3 - Hitung rute dengan jarak lebih dari 1000 mil graph.edges.filter {Get the edge distance) => distance> 1000} .take (3) // Demikian pula tulis kode Scala untuk kueri di bawah ini // Kueri 4 - Urutkan dan cetak rute terpanjang // Kueri 5 - Tampilkan simpul derajat tertinggi untuk penerbangan masuk dan keluar bandara // Kueri 6 - Dapatkan nama bandara dengan ID 10397 dan 12478 // Kueri 7 - Temukan bandara dengan penerbangan masuk tertinggi // Kueri 8 - Temukan bandara dengan penerbangan keluar tertinggi // Kueri 9 - Temukan bandara paling penting menurut PageRank // Kueri 10 - Urutkan bandara berdasarkan peringkat // Kueri 11 - Tampilkan paling banyak Bandara penting // Kueri 12 - Temukan Rute dengan biaya penerbangan terendah // Kueri 13 - Temukan bandara dan biaya penerbangan terendahnya // Kueri 14 - Tampilkan kode bandara bersama dengan urutkan biaya penerbangan terendah

Use Case - 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 layanan Peta Geografis untuk memetakan Bandara di lokasi masing-masing di peta AS dan menampilkan kuantitas metrik.

  1. Menampilkan jumlah total penerbangan per Bandara
  2. Menampilkan jumlah metrik rute Tujuan dari setiap Bandara
  3. Menampilkan total penundaan semua penerbangan per Bandara

Sekarang, ini menyimpulkan blog Spark GraphX. Saya harap Anda menikmati membacanya dan menganggapnya informatif. Lihat blog berikutnya dalam seri Apache Spark kami di untuk siap dipasarkan di Apache Spark.

Kami merekomendasikan yang berikut ini Pelatihan Apache Spark | Video Analisis Data Penerbangan dari Edureka untuk memulai dengan:

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

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan segera menghubungi Anda.

Jika Anda ingin mempelajari Spark dan membangun karier di domain Spark dan membangun keahlian untuk melakukan Pemrosesan Data skala besar menggunakan RDD, Streaming Spark, SparkSQL, MLlib, GraphX, dan Scala dengan kasus penggunaan Kehidupan Nyata, lihat kami yang interaktif, langsung -on line sini, yang hadir dengan dukungan 24 * 7 untuk memandu Anda selama periode belajar Anda.

string to date convert in java