Tutorial Streaming Spark - Analisis Sentimen Menggunakan Apache Spark



Blog Spark Streaming ini akan memperkenalkan Anda pada Spark Streaming, fitur dan komponennya. Ini mencakup proyek Analisis Sentimen menggunakan Twitter.

Spark Streaming adalah ekstensi dari API Spark inti yang memungkinkan pemrosesan aliran data langsung yang dapat diskalakan, throughput tinggi, dan toleran terhadap kesalahan. Spark Streaming dapat digunakan untuk mengalirkan data langsung dan pemrosesan dapat dilakukan secara real time. Basis pengguna Spark Streaming yang terus berkembang terdiri dari nama-nama terkenal seperti Uber, Netflix, dan Pinterest.

Dalam hal Analisis Data Real Time, Spark Streaming menyediakan satu platform untuk menyerap data untuk pemrosesan yang cepat dan langsung dan membuktikan keahlian Anda dalam hal yang sama.Melalui blog ini, saya akan memperkenalkan Anda ke domain baru Spark Streaming yang menarik ini dan kami akan membahas kasus penggunaan lengkap, Analisis Sentimen Twitter menggunakan Spark Streaming.





Berikut ini adalah topik-topik yang akan dibahas dalam blog ini:

  1. Apa itu Streaming?
  2. Mengapa Spark Streaming?
  3. Ikhtisar Streaming Spark
  4. Fitur Streaming Spark
  5. Dasar-dasar Streaming Spark
    5.1 Konteks Streaming
    5.2 DStream
    5.3 Caching / Persistence
    5.4 Akumulator, Variabel Siaran, dan Pos Pemeriksaan
  6. Kasus Penggunaan - Analisis Sentimen Twitter

Apa itu Streaming?

Streaming Data merupakan suatu teknik pemindahan data sehingga dapat diolah sebagai aliran yang stabil dan kontinyu. Teknologi streaming menjadi semakin penting dengan pertumbuhan Internet.



Apa Itu Streaming - Spark Streaming - EdurekaAngka: Apa itu Streaming?

Mengapa Spark Streaming?

Kami dapat menggunakan Spark Streaming untuk mengalirkan data waktu nyata dari berbagai sumber seperti Twitter, Pasar Saham, dan Sistem Geografis dan melakukan analitik yang kuat untuk membantu bisnis.

Angka: Mengapa Spark Streaming?



Ikhtisar Streaming Spark

Spark Streaming digunakan untuk memproses data streaming waktu nyata. Ini adalah tambahan yang berguna untuk API Spark inti. Spark Streaming memungkinkan pemrosesan aliran data langsung dengan throughput tinggi dan toleransi kesalahan.

Angka: Streaming di Spark Streaming

Unit aliran fundamental adalah DStreamyang pada dasarnya adalah serangkaian RDD untuk memproses data waktu nyata.

Fitur Streaming Spark

  1. Penskalaan: Spark Streaming dapat dengan mudah menskalakan ke ratusan node.
  2. Kecepatan: Aku tachieves latensi rendah.
  3. Toleransi kesalahan: Spark memiliki kemampuan epulih secara efisien dari kegagalan.
  4. Integrasi: Spark terintegrasi dengan batch dan pemrosesan waktu nyata.
  5. Analisa bisnis: Spark Streaming adalah used untuk melacak perilaku pelanggan yang dapat digunakan dalam analisis bisnis.

Alur Kerja Streaming Spark

Alur kerja Spark Streaming memiliki empat tahapan tingkat tinggi. Yang pertama adalah mengalirkan data dari berbagai sumber. Sumber ini dapat berupa sumber data streaming seperti Akka, Kafka, Flume, AWS, atau Parquet untuk streaming waktu nyata. Jenis sumber kedua termasuk HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB dan Cassandra untuk streaming statis / batch. Setelah ini terjadi, Spark dapat digunakan untuk melakukan Machine Learning pada data melalui MLlib API-nya. Selanjutnya, Spark SQL digunakan untuk melakukan operasi lebih lanjut pada data ini. Terakhir, output streaming dapat disimpan ke dalam berbagai sistem penyimpanan data seperti HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS, dan sistem file lokal.

Angka: Ringkasan Spark Streaming

Dasar-dasar Streaming Spark

  1. Konteks Streaming
  2. DStream
  3. Caching
  4. Akumulator, Variabel Siaran, dan Pos Pemeriksaan

Konteks Streaming

boneka vs chef vs ansible

Konteks Streaming mengkonsumsi aliran data di Spark. Ini mendaftarkan file Masukkan DStream untuk menghasilkan a Penerima obyek. Ini adalah titik masuk utama untuk fungsionalitas Spark. Spark menyediakan sejumlah implementasi default dari sumber seperti Twitter, Akka Actor, dan ZeroMQ yang dapat diakses dari konteksnya.

Objek StreamingContext dapat dibuat dari objek SparkContext. SparkContext mewakili koneksi ke cluster Spark dan dapat digunakan untuk membuat RDD, akumulator, dan variabel siaran di cluster tersebut.

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

DStream

Aliran Diskrit (DStream) adalah abstraksi dasar yang disediakan oleh Spark Streaming. Ini adalah aliran data yang berkelanjutan. Ini diterima dari sumber data atau aliran data yang diproses yang dihasilkan dengan mengubah aliran input.

Angka: Mengekstrak kata-kata dari Input DStream

Secara internal, DStream diwakili oleh rangkaian RDD yang berkelanjutan dan setiap RDD berisi data dari interval tertentu.

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

Angka: Penerima mengirimkan data ke Input DStream di mana setiap Batch berisi RDD

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

Transformasi di DStreams:

Operasi apa pun yang diterapkan pada DStream diterjemahkan menjadi operasi pada RDD yang mendasarinya. Transformasi memungkinkan data dari input DStream dimodifikasi mirip dengan RDD. DStreams mendukung banyak transformasi yang tersedia pada RDD Spark normal.

Angka: Transformasi DStream

Berikut ini adalah beberapa transformasi populer di DStreams:

peta( func )peta( func ) mengembalikan DStream baru dengan meneruskan setiap elemen sumber DStream melalui fungsi func.
flatMap ( func )flatMap ( func ) mirip dengan peta ( func ) tetapi setiap item input dapat dipetakan ke 0 atau lebih item output dan mengembalikan DStream baru dengan meneruskan setiap elemen sumber melalui fungsi func.
Saring( func )Saring( func ) mengembalikan DStream baru dengan memilih hanya rekaman dari sumber DStream yang mana func mengembalikan true.
mengurangi( func )mengurangi( func ) mengembalikan DStream baru dari RDD elemen tunggal dengan menggabungkan elemen di setiap RDD sumber DStream menggunakan fungsi func .
groupBy ( func )groupBy ( func ) mengembalikan RDD baru yang pada dasarnya dibuat dengan kunci dan daftar item yang sesuai dari grup itu.

Output DStreams:

Operasi keluaran memungkinkan data DStream didorong keluar ke sistem eksternal seperti database atau sistem file. Operasi keluaran memicu eksekusi sebenarnya dari semua transformasi DStream.

Angka: Operasi Output di DStreams

Caching

DStreams memungkinkan pengembang untuk menyimpan / menyimpan data aliran dalam memori. Ini berguna jika data di DStream akan dihitung beberapa kali. Ini dapat dilakukan dengan menggunakan bertahan () metode di DStream.

Angka: Caching menjadi 2 Node

Untuk aliran input yang menerima data melalui jaringan (seperti Kafka, Flume, Sockets, dll.),tingkat persistensi default diatur untuk mereplikasi data ke dua node untuk toleransi kesalahan.

Akumulator, Variabel Siaran, dan Pos Pemeriksaan

Akumulator: Akumulator adalah variabel yang hanya ditambahkan melalui operasi asosiatif dan komutatif. Mereka digunakan untuk mengimplementasikan penghitung atau penjumlahan. Melacak akumulator di UI dapat berguna untuk memahami kemajuan tahapan yang sedang berjalan. Spark secara native mendukung akumulator numerik. Kita dapat membuat akumulator bernama atau tidak bernama.

Variabel Siaran: Variabel siaran memungkinkan programmer untuk menyimpan variabel read-only yang di-cache pada setiap mesin daripada mengirimkan salinannya dengan tugas. Mereka dapat digunakan untuk memberi setiap node salinan dari set data masukan yang besar dengan cara yang efisien. Spark juga mencoba mendistribusikan variabel siaran menggunakan algoritma siaran yang efisien untuk mengurangi biaya komunikasi.

urutkan di c ++

Pos pemeriksaan: Pos pemeriksaan mirip dengan pos pemeriksaan di game. Mereka membuatnya berjalan 24/7 dan membuatnya tahan terhadap kegagalan yang tidak terkait dengan logika aplikasi.


Angka:
Fitur Pos Pemeriksaan

Kasus Penggunaan - Analisis Sentimen Twitter

Sekarang kita telah memahami konsep inti dari Spark Streaming, mari kita selesaikan masalah kehidupan nyata menggunakan Spark Streaming.

Pernyataan masalah: Untuk merancang Sistem Analisis Sentimen Twitter tempat kami mengisi sentimen waktu nyata untuk manajemen krisis, penyesuaian layanan, dan pemasaran target.

Aplikasi Analisis Sentimen:

  • Memprediksi kesuksesan sebuah film
  • Memprediksi keberhasilan kampanye politik
  • Putuskan apakah akan berinvestasi di perusahaan tertentu
  • Iklan bertarget
  • Tinjau produk dan layanan

Implementasi Spark Streaming:

Temukan Pseudo Code di bawah ini:

// Impor paket yang diperlukan ke dalam Program Spark, impor org.apache.spark.streaming. {Detik, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object 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 Hashtags} // Transformasi RDD menggunakan sortBy dan kemudian petakan tag fungsi.countByValue () .foreachRDD {rdd => val now = Dapatkan waktu saat ini dari setiap Tweet rdd .sortBy (_._ 2) .map (x => (x, sekarang)) // Menyimpan keluaran kita di ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // Transformasi DStream menggunakan fungsi filter dan peta val tweets = stream.filter {t => tag val = t. Pisahkan Di Spaces .filter (_. BeginWith ('#')). Konversi ke Huruf Kecil tags.exists {x => true}} val data = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tagss = status.getHashtagEntities.map (_. GetText.toLowerCase) (status.getText, sentiment.toString, tagss.toString ())} data.print () // Menyimpan keluaran kita di ~ / dengan nama file yang dimulai seperti twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. mulai () ssc.awaitTermination ()}}

Hasil:

Berikut ini adalah hasil yang ditampilkan di Eclipse IDE saat menjalankan program Twitter Sentiment Streaming.

Angka: Output Analisis Sentimen di Eclipse IDE

Seperti yang bisa kita lihat di screenshot, semua tweet dikategorikan menjadi Positif, Netral dan Negatif sesuai dengan sentimen dari isi tweet.

Keluaran Sentimen Tweet disimpan ke dalam folder dan file sesuai dengan waktu pembuatannya. Output ini dapat disimpan di sistem file lokal atau HDFS sesuai kebutuhan. Direktori keluaran terlihat seperti ini:

Angka: Output folder di dalam folder proyek 'twitter' kami

Di sini, di dalam direktori twitter, kita dapat menemukan nama pengguna pengguna Twitter beserta stempel waktu untuk setiap tweet seperti yang ditunjukkan di bawah ini:

Angka: File keluaran berisi nama pengguna Twitter dengan stempel waktu

bagaimana menghentikan program java dalam kode

Sekarang kita telah mendapatkan nama pengguna dan cap waktu Twitter, mari kita lihat Sentimen dan tweet yang disimpan di direktori utama. Di sini, setiap tweet diikuti oleh sentimen emosi. Sentimen yang disimpan ini selanjutnya digunakan untuk menganalisis banyak sekali wawasan oleh perusahaan.

Angka: File keluaran berisi tweet dengan sentimen

Kode Tweaking:

Sekarang, mari kita ubah sedikit kode kita untuk mendapatkan sentimen untuk hashtag (topik) tertentu. Saat ini, Donald Trump, Presiden Amerika Serikat sedang menjadi trending di berbagai saluran berita dan media sosial online. Mari kita lihat sentimen yang terkait dengan kata kunci ' Truf '.

Angka: Melakukan Analisis Sentimen pada Tweet dengan Kata Kunci 'Trump'

Bergerak Maju:

Seperti yang telah kita lihat dari demonstrasi Analisis Sentimen, kita dapat mengekstrak sentimen dari topik tertentu seperti yang kita lakukan untuk 'Trump'. Demikian pula, Analisis Sentimen dapat digunakan dalam manajemen krisis, penyesuaian layanan, dan pemasaran target oleh perusahaan di seluruh dunia.

Perusahaan yang menggunakan Spark Streaming untuk Analisis Sentimen telah menerapkan pendekatan yang sama untuk mencapai hal berikut:

  1. Meningkatkan pengalaman pelanggan
  2. Mendapatkan keunggulan kompetitif
  3. Mendapatkan Business Intelligence
  4. Merevitalisasi merek yang hilang

Dengan ini, kita sampai pada akhir ini Tutorial Streaming Spark blog. Sekarang, Anda pasti sudah memiliki pemahaman yang baik tentang apa itu Spark Streaming. Kasus penggunaan Analisis Sentimen Twitter akan memberi Anda kepercayaan diri yang diperlukan untuk mengerjakan proyek mendatang yang Anda temui di Spark Streaming dan Apache Spark. Berlatih adalah kunci untuk menguasai subjek apa pun dan saya harap blog ini cukup menarik minat Anda untuk menjelajahi lebih jauh tentang Apache Spark.

Kami merekomendasikan Tutorial YouTube Streaming Spark dari Edureka berikut untuk memulai:

Spark Streaming | Contoh Analisis Sentimen Twitter | Edureka

Seri video Tutorial Spark ini memberikan latar belakang lengkap ke dalam komponen bersama dengan kasus penggunaan Kehidupan Nyata seperti Analisis Sentimen Twitter , Analisis Prediksi Game NBA , Sistem Deteksi Gempa , Analisis Data Penerbangan dan Sistem Rekomendasi Film . Kami secara pribadi telah merancang kasus penggunaan untuk memberikan keahlian menyeluruh kepada siapa pun yang menjalankan kode.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan segera menghubungi Anda. Jika Anda ingin mempelajari Spark dan membangun karir di domain Spark dan membangun keahlian untuk melakukan Pemrosesan Data skala besar menggunakan RDD, Spark Streaming, 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.