Tutorial Streaming Spark - Analisis Sentimen Menggunakan Apache Spark

Blog Spark Streaming ini akan memperkenalkan anda kepada Spark Streaming, ciri dan komponennya. Ia merangkumi projek Analisis Sentimen menggunakan Twitter.

Streaming Spark adalah lanjutan dari Spark API teras yang membolehkan pemprosesan aliran data langsung secara berskala, throughput tinggi, toleransi kesalahan. Spark Streaming dapat digunakan untuk streaming data langsung dan pemprosesan dapat terjadi dalam masa nyata. Pangkalan pengguna Spark Streaming yang terus berkembang terdiri daripada nama isi rumah seperti Uber, Netflix dan Pinterest.



Ketika datang ke Analisis Data Masa Nyata, Spark Streaming menyediakan satu platform untuk mengambil data untuk pemprosesan cepat dan langsung dan membuktikan kemahiran anda sama.Melalui blog ini, saya akan memperkenalkan anda kepada domain baru Spark Streaming yang menarik ini dan kami akan melalui kes penggunaan yang lengkap, Analisis Sentimen Twitter menggunakan Spark Streaming.



Berikut adalah topik yang akan dibahas dalam blog ini:

  1. Apakah Streaming?
  2. Mengapa Spark Streaming?
  3. Gambaran Keseluruhan Streaming Spark
  4. Ciri Strim Streaming
  5. Asas Pengaliran Spark
    5.1 Konteks Penstriman
    5.2 DStream
    5.3 Caching / Ketekunan
    5.4 Akumulator, Pembolehubah Siaran dan Pusat Pemeriksaan
  6. Use Case - Analisis Sentimen Twitter

Apakah Streaming?

Streaming Data adalah teknik untuk memindahkan data sehingga dapat diproses sebagai aliran yang stabil dan berterusan. Teknologi streaming menjadi semakin penting dengan pertumbuhan Internet.



Apakah Streaming - Spark Streaming - EdurekaGambar: Apakah Streaming?

Mengapa Spark Streaming?

Kami dapat menggunakan Spark Streaming untuk menyalurkan data masa nyata dari pelbagai sumber seperti Twitter, Pasaran Saham dan Sistem Geografi dan melakukan analisis yang kuat untuk membantu perniagaan.

Gambar: Mengapa Spark Streaming?



Gambaran Keseluruhan Streaming Spark

Pengaliran Spark digunakan untuk memproses data streaming masa nyata. Ini adalah tambahan yang berguna untuk inti Spark API. Streaming Spark membolehkan pemprosesan aliran tinggi dan toleransi kesalahan aliran data langsung.

Gambar: Strim dalam Spark Streaming

Unit aliran asas adalah DStreamyang pada dasarnya merupakan rangkaian RDD untuk memproses data masa nyata.

Ciri Strim Streaming

  1. Penimbangan: Streaming Spark dengan mudah boleh mencapai ratusan nod.
  2. Kelajuan: Ia adalahlaten rendah.
  3. Toleransi Kesalahan: Spark mempunyai kemampuan untuk epulih dengan betul dari kegagalan.
  4. Kesepaduan: Spark berintegrasi dengan pemprosesan kumpulan dan masa nyata.
  5. Analisis bisnes: Spark Streaming adalah andauntuk mengesan tingkah laku pelanggan yang boleh digunakan dalam analisis perniagaan.

Aliran Kerja Streaming Spark

Aliran kerja Spark Streaming mempunyai empat tahap peringkat tinggi. Yang pertama adalah mengalirkan data dari pelbagai sumber. Sumber ini boleh menjadi sumber data streaming seperti Akka, Kafka, Flume, AWS atau Parquet untuk streaming masa nyata. Jenis sumber kedua merangkumi HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB dan Cassandra untuk statis / batch streaming. Setelah ini berlaku, Spark dapat digunakan untuk melakukan Pembelajaran Mesin pada data melalui MLlib API-nya. Selanjutnya, Spark SQL digunakan untuk melakukan operasi lebih lanjut pada data ini. Akhirnya, output streaming dapat disimpan ke dalam pelbagai sistem penyimpanan data seperti HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS dan sistem fail tempatan.

Gambar: Gambaran Keseluruhan Stark Streaming

Asas Pengaliran Spark

  1. Konteks Penstriman
  2. DStream
  3. Caching
  4. Akumulator, Pembolehubah Siaran dan Pusat Pemeriksaan

Konteks Penstriman

Konteks Penstriman menggunakan aliran data di Spark. Ia mendaftarkan sebuah Masukkan DStream untuk menghasilkan a Penerima objek. Ia adalah pintu masuk utama untuk fungsi Spark. Spark menyediakan sejumlah implementasi sumber lalai seperti Twitter, Akka Actor dan ZeroMQ yang dapat diakses dari konteks.

Objek StreamingContext dapat dibuat dari objek SparkContext. SparkContext mewakili sambungan ke kumparan Spark dan dapat digunakan untuk membuat RDD, akumulator dan pemboleh ubah siaran pada kluster tersebut.

import org.apache.spark._ import org.apache.spark.streaming._ var ssc = baru StreamingContext (sc, Detik (1))

DStream

Aliran diskrit (DStream) adalah abstraksi asas yang disediakan oleh Spark Streaming. Ia adalah aliran data berterusan. Ini diterima dari sumber data atau aliran data yang diproses yang dihasilkan dengan mengubah aliran input.

Gambar: Mengekstrak kata-kata dari Input DStream

Secara dalaman, DStream diwakili oleh rangkaian RDD berterusan dan setiap RDD mengandungi data dari selang waktu tertentu.

cara menggunakan goto c ++

Input DStreams: Input DStreams adalah DStreams yang mewakili aliran data input yang diterima dari sumber streaming.

Gambar: Penerima menghantar data ke Input DStream di mana setiap Batch mengandungi RDD

Setiap input DStream dikaitkan dengan objek Penerima yang menerima data dari sumber dan menyimpannya dalam memori Spark untuk diproses.

Transformasi pada DStreams:

Sebarang operasi yang berlaku pada DStream diterjemahkan kepada operasi pada RDD yang mendasari. Transformasi membolehkan data dari input DStream diubahsuai serupa dengan RDD. DStreams menyokong banyak transformasi yang terdapat pada Spark RDD biasa.

Gambar: Transformasi DStream

Berikut adalah beberapa transformasi popular di DStreams:

peta ( keseronokan )peta ( keseronokan ) mengembalikan DStream baru dengan meneruskan setiap elemen sumber DStream melalui fungsi keseronokan.
peta rata ( keseronokan )peta rata ( keseronokan serupa dengan peta ( keseronokan ) tetapi setiap item input dapat dipetakan ke 0 atau lebih item output dan mengembalikan DStream baru dengan meneruskan setiap elemen sumber melalui fungsi keseronokan.
penapis ( keseronokan )penapis ( keseronokan ) mengembalikan DStream baru dengan memilih hanya catatan sumber DStream yang digunakan keseronokan kembali benar.
mengurangkan ( keseronokan )mengurangkan ( keseronokan ) mengembalikan DStream baru RDD elemen tunggal dengan mengagregat elemen dalam setiap RDD sumber DStream menggunakan fungsi keseronokan .
kumpulanDengan ( keseronokan )kumpulanDengan ( keseronokan ) mengembalikan RDD baru yang pada dasarnya terdiri dengan kunci dan senarai item kumpulan yang sesuai.

Output DStreams:

Operasi output membolehkan data DStream didorong ke sistem luaran seperti pangkalan data atau sistem fail. Operasi output mencetuskan pelaksanaan sebenar semua transformasi DStream.

Gambar: Operasi Keluaran pada DStreams

Caching

DStreams benarkan pembangun menyimpan / menyimpan data aliran dalam memori. Ini berguna sekiranya data dalam DStream akan dihitung berkali-kali. Ini boleh dilakukan dengan menggunakan berterusan () kaedah pada DStream.

Gambar: Melayari menjadi 2 Nod

Untuk aliran input yang menerima data melalui rangkaian (seperti Kafka, Flume, Sockets, dll.),tahap ketekunan lalai ditetapkan untuk meniru data ke dua nod untuk toleransi kesalahan.

Akumulator, Pembolehubah Siaran dan Pusat Pemeriksaan

Penumpuk: Penumpuk adalah pemboleh ubah yang hanya ditambahkan melalui operasi asosiatif dan komutatif. Mereka digunakan untuk melaksanakan pembilang atau jumlah. Penjejak akumulator dalam UI boleh berguna untuk memahami kemajuan peringkat berjalan. Spark secara semula jadi menyokong penumpuk angka. Kita boleh membuat penumpuk yang dinamakan atau tidak dinamakan.

bagaimana melakukan kuasa di java

Pembolehubah Siaran: Pembolehubah siaran benarkan pengaturcara menyimpan pemboleh ubah baca sahaja pada setiap mesin daripada menghantar salinannya dengan tugas. Mereka dapat digunakan untuk memberikan setiap simpul salinan set data input yang besar dengan cara yang efisien. Spark juga berusaha mengedarkan pemboleh ubah siaran menggunakan algoritma siaran yang cekap untuk mengurangkan kos komunikasi.

Pusat Pemeriksaan: Pusat Pemeriksaan serupa dengan pusat pemeriksaan dalam permainan. Mereka membuatnya berjalan 24/7 dan menjadikannya tahan terhadap kegagalan yang tidak berkaitan dengan logik aplikasi.


Gambar:
Ciri-ciri Pusat Pemeriksaan

Use Case - Analisis Sentimen Twitter

Sekarang setelah kita memahami konsep inti Spark Streaming, mari kita selesaikan masalah kehidupan sebenar menggunakan Spark Streaming.

Pernyataan masalah: Untuk merancang Sistem Analisis Sentimen Twitter di mana kita mengisi sentimen masa nyata untuk pengurusan krisis, penyesuaian perkhidmatan dan pemasaran sasaran.

Aplikasi Analisis Sentimen:

  • Ramalkan kejayaan sesebuah filem
  • Ramalkan kejayaan kempen politik
  • Tentukan sama ada untuk melabur dalam syarikat tertentu
  • Iklan yang disasarkan
  • Mengkaji produk dan perkhidmatan

Pelaksanaan Spark Streaming:

Cari Kod Pseudo di bawah:

// Import pakej yang diperlukan ke dalam Spark Program import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File objek twitterSentiment {def main (args : Array [String]) {if (args.length<4) { System.err.println('Usage: TwitterPopularTags ' + ' []') System.exit(1) } StreamingExamples.setStreamingLogLevels() //Passing our Twitter keys and tokens as arguments for authorization val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret) = args.take(4) val filters = args.takeRight(args.length - 4) // Set the system properties so that Twitter4j library used by twitter stream // Use them to generate OAuth credentials System.setProperty('twitter4j.oauth.consumerKey', consumerKey) ... System.setProperty('twitter4j.oauth.accessTokenSecret', accessTokenSecret) val sparkConf = new SparkConf().setAppName('twitterSentiment').setMaster('local[2]') val ssc = new Streaming Context val stream = TwitterUtils.createStream(ssc, None, filters) //Input DStream transformation using flatMap val tags = stream.flatMap { status =>Dapatkan Teks Dari Hashtag} // Transformasi RDD menggunakan sortBy dan kemudian peta fungsi tags.countByValue () .foreachRDD {rdd => val now = Dapatkan masa semasa setiap Tweet rdd .sortBy (_._ 2) .map (x => (x, sekarang)) // Menyimpan output kami di ~ / twitter / direktori .saveAsTextFile (s '~ / twitter / $ now')} // Transformasi DStream menggunakan fungsi penapis dan peta val tweets = stream.filter {t => teg val = t. Split On Spaces .filter (_. BermulaDengan ('#')). Tukar ke huruf kecil tags.exists {x => true}} val data = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tags = status.getHashtagEntities.map (_. GetText.toLowerCase) (status.getText, sentiment.toString, tagss.toString ())} data.print () // Menyimpan output kami di ~ / dengan nama fail bermula seperti twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. mulakan () ssc.awaitTermination ()}}

Keputusan:

Berikut adalah hasil yang dipaparkan di Eclipse IDE semasa menjalankan program Twitter Sentiment Streaming.

Gambar: Output Analisis Sentimen dalam Eclipse IDE

Seperti yang dapat kita lihat di tangkapan layar, semua tweet dikategorikan ke dalam Positif, Neutral dan Negatif sesuai dengan sentimen isi tweet tersebut.

Output Sentiments of Tweets disimpan ke dalam folder dan fail mengikut masa ia dibuat. Output ini dapat disimpan pada sistem fail tempatan atau HDFS jika perlu. Direktori output kelihatan seperti ini:

Gambar: Folder keluaran di dalam folder projek ‘twitter’ kami

Di sini, di dalam direktori twitter, kita dapat mencari nama pengguna pengguna Twitter bersama dengan cap waktu untuk setiap tweet seperti yang ditunjukkan di bawah:

Gambar: Fail keluaran yang mengandungi nama pengguna Twitter dengan cap waktu

Setelah mendapat nama pengguna dan cap waktu Twitter, mari kita lihat Sentimen dan tweet yang tersimpan di direktori utama. Di sini, setiap tweet diikuti oleh emosi sentimen. Sentimen ini yang disimpan lebih jauh digunakan untuk menganalisis banyak pandangan oleh syarikat.

Gambar: Fail keluaran yang mengandungi tweet dengan sentimen

Kod Tweaking:

Sekarang, mari kita ubah sedikit kod kita untuk mendapatkan sentimen untuk hashtag (topik) tertentu. Pada masa ini, Donald Trump, Presiden Amerika Syarikat sedang melintasi saluran berita dan media sosial dalam talian. Marilah kita melihat sentimen yang berkaitan dengan kata kunci ' Trump '.

Gambar: Melakukan Analisis Sentimen pada Tweet dengan Kata Kunci ‘Trump’

Melangkah ke Depan:

Seperti yang kita lihat dari demonstrasi Analisis Sentimen, kita dapat mengekstrak sentimen topik tertentu seperti yang kita lakukan untuk ‘Trump’. Begitu juga, Sentiment Analytics dapat digunakan dalam pengelolaan krisis, penyesuaian perkhidmatan dan pemasaran sasaran oleh syarikat di seluruh dunia.

Syarikat yang menggunakan Spark Streaming untuk Analisis Sentimen telah menggunakan pendekatan yang sama untuk mencapai yang berikut:

  1. Meningkatkan pengalaman pelanggan
  2. Memperoleh kelebihan daya saing
  3. Memperoleh Kepintaran Perniagaan
  4. Menghidupkan semula jenama yang kalah

Dengan ini, kita telah sampai ke akhir ini Tutorial Streaming Spark blog. Sekarang, anda mesti memperoleh pemahaman yang baik tentang apa itu Spark Streaming. Kes penggunaan Analisis Sentimen Twitter akan memberi anda keyakinan yang diperlukan untuk mengerjakan sebarang projek masa depan yang anda hadapi di Spark Streaming dan Apache Spark. Berlatih adalah kunci untuk menguasai mana-mana subjek dan saya harap blog ini telah cukup menarik minat anda untuk meneroka lebih lanjut mengenai Apache Spark.

apa maksud append di java

Kami mengesyorkan Tutorial YouTube Spark Streaming berikut dari Edureka untuk bermula dengan:

Penstriman Spark | Contoh Analisis Sentimen Twitter | Edureka

Rangkaian video di Spark Tutorial ini memberikan latar belakang lengkap mengenai komponen-komponen bersama dengan kes penggunaan Nyata Kehidupan seperti Analisis Sentimen Twitter , Analisis Ramalan Permainan NBA , Sistem Pengesanan Gempa , Analisis Data Penerbangan dan Sistem Pengesyoran Filem . Kami secara peribadi telah merancang kes penggunaan untuk memberikan kepakaran serba lengkap kepada sesiapa sahaja yang menjalankan kod tersebut.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda secepat mungkin. Sekiranya anda ingin belajar 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 dalam talian di sini, yang disertakan dengan sokongan 24 * 7 untuk membimbing anda sepanjang tempoh pembelajaran anda.