Individual
Session 05
To be Submitted Week XX
1. Misalkan anda mendapatkan pekerjaan untuk melakukan Real Time Sentiment Analysis
terhadap setiap Tweet dengan hash tag “Jokowi” menggunakan pendekatan klasifikasi
dengan label sentimen positif dan sentimen negatif. Jelaskan prinsip kerja dari streaming
data processing yang dilakukan pada data tersebut apabila anda memutuskan untuk
menggunakan Apache Spark untuk menyelesaikan pekerjaan tersebut.
Proses streaming data processing menggunakan Apache Spark dapat dilihat dari gambar di
bawah ini:
Untuk proses streaming data twitter menuju Spark dapat dilihat dari ilustrasi di bawah ini:
Pada bagian ke 2 proses dapat dibagi menjadi seperti proses di bawah ini:
1. Streaming Context mendapatkan input data stream pada Spark yang mendaftarkan Input
Dstream untuk menghasilkan objek Receiver. Hal ini merupakan main entry point untuk
fungsionalitas Spark. Spark menyediakan implementasi untuk berbagai sumber seperti
Twitter, Akka dan lain-lain.
2.DStream (Discretized Stream) merupakan abstraksi dasar yang disediakan oleh Spark Streaming
yang merupakan data stream yang berkelanjutan. Data stream yang diterima dibuat dengan
mengubah data input stream. Pada intinya DStream direpresentasikan oleh RDD seri berkelanjutan
dan setiap RDD mengandung data dari sebuah interval.
2.1. Input DStreams merupakan representasi dari Stream input data diterima dari sumber streaming.
Setiap input DStreams berasosiasi dengan obyek Receiver yang menerima data dari sumber
streaming dan menyimpannya pada memory Spark untuk diproses lebih lanjut.
Berikut ini merupakan tabel berisi transformasi yang ada pada DStreams:
3. Caching : DStreams membuat developer untuk mengcache Streams data pada memory. Hal ini
berguna jika data DStream dilakukan proses komputasi berkali-kali. Dengan menggunakan fungsi
persist() pada DStream. Pada input stream yang mendapatkan data dari jaringan mempunyai default
persistence level untuk mereplikasi data menjadi 2 node untuk fault-tolerance.
Accumulators adalah variabel yang ditambahkan melalui operasi associative dan komutatif.
Tracking accumulators pada UI dapat berguna untuk melihat progress stages yang sedang berjalan.
Spark secara native mensupport numeric accumulators.
Broadcast variables membuat programmer untuk dapat menyimpan read only variable cached pada
setiap mesin daripada mengirimkan copy dari setiap task. Mereka dapat digunakan untuk
memberikan setiap node copy dari input dataset yang besar secara efisien. Spark juga dapat
mendistribusikan broadcast variable menggunakan algoritma broadcast yang efisien untuk
mengurangi cost.
Checkpoint berguna untuk menyimpan checkpoint seperti pada game untuk membuat resilient
terhadap failure yang tidak berkaitan dengan logic aplikasi.
Setelah sentiment analysis, tweet dan skor sentiment analysis disimpan pada parquet file yang
merupakan format data storage.
2. Jelaskan mengapa dalam teknologi big data saat ini, Bahasa SQL masih sangat dibutuhkan
untuk mengakses data? Berikan contoh produk apa dalam Hadoop Ecosystem yang dapat
digunakan untuk melakukan hal tersebut serta jelaskan bagaimana cara kerjanya.
Dalam teknologi big data saat ini bahasa sql masih sangat dibutuhkan untuk mengakses
data karena beberapa alasan berikut:
1. SQL mudah dipelajari dan digunakan, dimana tidak seperti bahasa pemrograman lain
yang membutuhkan pemahaman konseptual tingkat tinggi dan menghafal langkah-
langkah yang diperlukan untuk melakukan fungsinya.
2. SQL membantu dalam memahami dataset. SQL akan membantu untuk menyelidiki
dataset secara memadai, memvisualisasikannya, mengidentifikasi strukturnya dan
mengetahui bagaimana bentu dataset sebenarnya. Ini akan memungkinkan untuk
mengetahui apakah ada nilai yang hilang, mengidentifikasi pencilan, nulls, dan format
dataset.
3. SQL terintegrasi dengan bahasa scripting dengan bahasa scripting lain seperti R dan
Python, dengan begitu maka dapat melakukan pekerjaan dengan mudah.
4. SQL dapat mengelola volume data yang sangat besar, bekerja dengan volume data yang
demikian membutuhkan solusi tingkat tinggi untuk mengelolanya selain spreadsheet
biasa, dengan demikian SQL cocok bila digunakan dalam konteks big data.
1. Apache Hive
2. Pig(Scripting)
Apache Hive.
Hive merupakan komponen untuk melakukan map reduce dengan cara kerja mirip dengan
data warehousing yang melakukan read, write dan manage dataset yang besar yang
terdistribusi menggunakan interface seperti SQL.
Bahasa query yang digunakan dinamakan HQL(Hive Query Language) yang mirip dengan
SQL. Ada 3 format yang digunakan dalam Hive yaitu:
1. Tabel: Tabel dalam Hive sangat mirip dengan tabel RDBMS yang juga berisi baris dan
tabel. Hive hanya dilapisi dengan Hadoop File System(HDFS), oleh karena itu tabel
dipetakan secara langsung ke direktori filesystem. Ini juga mendukung tabel yang
tersimpan dalam sistem file asli lainnya.
2. Partisi: tabel hive bisa memiliki lebih dari satu partisi. Mereka dipetakan ke
subdirektori dan sistem file juga.
3. Bucket: dalam data Hive dapat dibagi menjadi bucket. Bucket disimpan sebagai file
dalam partisi pada sistem file yang mendasarinya.
Berikut merupakan beberapa hal yang bisa dilakukan HQL dengan mudah:
Apache Pig merupakan komponen untuk melakukan map reduce. Pig terdiri dari 2 bagian yaitu
Pig Latin yang merupakan bahasanya dan pig runtime yang merupakan execution environment
yang dapat dianalogikan seperti java dan JVM. Pig Latin language mempunyai struktur yang seperti
SQL command.
Dibalik cara kerja Pig sebuah map reduce dijalankan compiler secara internal mengubah pig latin
menjadi MapReduce yang membuat sequential set dari MapReduce job dan sebuah abstraksi.
Cara kerja Pig yaitu pertama meload command setelah itu meload data. Lalu melakukan fungsi
macam-macam seperti grouping, filtering, joining, sorting dan lain-lain. Dan yang terakhir data
dapat ditampilkan pada layar atau menyimpan hasilnya ke dalam HDFS.
b. R-tree: merupakan indexing yang digunakan untuk spasial atau range queries.
Diaplikasikan pada sistem geospasial dengan setiap entry mempunyai koordinat X
dan Ydengan nilai minimum dan maksimum. Kelebihan dari R-tree dibandingkan
B-tree adalah R-tree dapat memenuhi multidimensional atau range query
sedangkan b-tree tidak.