Anda di halaman 1dari 13

Assignment

Individual

Bambang Eko Santoso- 2240107990

Session 05
To be Submitted Week XX

COMP8025 Big Data Analytics


Jawablah pertanyaan berikut dengan jelas dan lengkapi dengan ilustrasi jika diperlukan.

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:

COMP8025 Big Data Analytics


Pada bagian pertama merupakan proses streaming twitter data untuk mengirim twitter data
kepada Apache Spark untuk diproses lebih lanjut. Dengan menggunakan developer
credential untuk mengautentikasi dan terhubung dengan Twitter API. Dapat menggunakan
Tweepy yang merupakan library Python untuk menjadi penghubung sebagai TCP socket
antara Twitter API dan Spark yang menunggu untuk memanggil Spark Structured
Streaming dan mengirim Twitter data.

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.

Obyek StreamingContext dapat dibuat dari obyek SparkContext. SparkContext mewakili


koneksi pada Spark Cluster dan dapat digunakan untuk membuat RDD(Resilient
Distributed Dataset), Accumulators dan broadcast variabel pada cluster tersebut.

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.

COMP8025 Big Data Analytics


DStream proses dapat dibagi menjadi 3 proses yaitu: Input DStreams, Transformasi pada DStreams
dan Output DStreams.

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.

COMP8025 Big Data Analytics


2.2. Transformasi pada DStreams merupakan operasi yang diaplikasikan pada translasi Dstream
untuk mengoperasikan pada RDD. Transformasi membuat data dari Input Dstream diubah menjadi
mirip dengan RDD. Dstreams mensupport banyak transformasi yang tersedia pada Spark RDD
pada umumnya.

Berikut ini merupakan tabel berisi transformasi yang ada pada DStreams:

Nama fungsi Keterangan


Map(func) Map(func) menghasilkan DStream yang baru
dengan melewati setiap element dari sumber
DStream melalui function func
flatMap(func) flatMap(func) mirip dengan map(func) akan
tetapi setiap input item dapat dimapping ke 0
atau lebih output items dan menghasilkan
DStreams yang baru dengan melewati setiap
sumber element melalui function func.
filter(func) filter(func) menghasilkan DStream yang baru
dengan memilih record dari sumber DStream
dimana func menghasilkan nilai true
reduce(func) Reduce(func) menghasilkan DStream yang
baru dari single-element RDD dengan
mengagregasikan elemen-elemen pada setiap
RDD dari sumber DStream menggunakan
function func
groupBy(func) groupBy(func) menghasilkan RDD baru
dimana hasilnya dibuat dari sebuah key dan
list yang berkorespondensi dengan item-item
dari grup tersebut.

COMP8025 Big Data Analytics


2.3 Output Dstreams: merupakan proses DStreams data untuk disalurkan keluar sistem seperti
database atau file sistem. Operasi output mentrigger eksekusi dari semua DStream transformation.

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.

4. Accumulators, Broadcast variables dan checkpoint.

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.

COMP8025 Big Data Analytics


Pada kasus tweet sentiment analysis, proses di atas merupakan proses preprosesing yang kemudian
dilakukan sentiment analysis menggunakan textblob, yang merupakan library Natural Language
Processing(NLP) pada Python untuk melakukan proses pada textual data.

Textblob menggunakan pendekatan lexicon-based, sebuah sentiment ditunjukan dengan orientasi


semantic dan intensitas dari setiap kata pada kalimat. Hal ini memerlukan kamus yang
mengklasifikasi negatif dan positif kata. Setelah menghitung skor dari setiap kata pada kalimat
maka final sentiment dikalkulasi dengan operation pooling seperti melakukan rata-rata dari setiap
sentiment.

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.

COMP8025 Big Data Analytics


Contoh product dalam Hadoop Ecosystem yang menggunakan untuk mengakses data dengan
bahasa SQL adalah:

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.

COMP8025 Big Data Analytics


Hive juga memiliki metascore yang menyimpan semua metadata. Ini adalah database relasional
yang berisi berbagai informasi yang berkaitan dengan skema Hive(jenis kolom, pemilik, data nilai
kunci, statistik, dll).

Berikut merupakan beberapa hal yang bisa dilakukan HQL dengan mudah:

1. Membuat dan mengelola tabel dan partisi


2. mendukung berbagai operator relasional, aritmatika dan logika
3. mengevaluasi fungsi
4. mengunduh isi tabel ke direktori lokal atau hasil query ke direktori HDFS

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.

COMP8025 Big Data Analytics


3. Mengapa teknik Indexing merupakan salah isu penting dalam Big Data? Berikan contoh-
contoh teknik-teknik Indexing.
Teknik indexing merupakan salah satu isu penting dalam Big Data karena Indexing
berguna dalam mengatasi permasalahan berikut:
1. Data Size
Dengan jumlah data yang semakin besar maka response time akan menjadi semakin
lama. Hal ini akan menjadi masalah dalam aplikasi.
2. Data is unsorted
Data yang disimpan kebanyakan tidak berurutan sehingga proses pencarian menjadi
tidak efektif jika data tidak berurutan. Dengan semakin besarnya data maka waktu
pencarian akan semakin lama.
3. Disk I/O
Salah satu cost komputasi yang paling besar adalah disk I/O. Proses menulis/membaca
sebuah harddisk membutuhkan waktu dan resource yang besar. Jika proses pencarian
data dilakukan dengan membaca file secara langsung maka dapat dibayangkan berapa
lama query time yang dibutuhkan untuk ukuran data yang besar.
Dari ketiga masalah di atas maka dapat disimpulkan bahwa proses query atau pencarian data
menjadi tidak efektif jika masalah tidak bisa diselesaikan dengan cara yang lebih optimal.

Teknik indexing dapat dibagi menjadi 2 jenis yaitu:

1. Pendekatan secara artificial intelligence(AI) memiliki kemampuannya untuk


mendeteksi relasi antara data item dengan mendapatkan pola dan kategori dari big data.
2. Pendekatan non artificial intelligence(AI) tidak tergantung dari arti dari data ataupun
hubungan antara text. Index dibuat berdasarkan item yang paling banyak diquery atau
dicari pada data set yang ada.

Contoh indexing menggunakan pendekatan secara AI:

1. Latent Semantic Indexing.


LSI merupakan strategi indexing yang mengidentifikasi pola antara kondisi pada data
set yang tidak terstruktur terutama text. LSI menggunakan pendekatan matematika
yang dinamakan SVD(Singular Value Decomposition) untuk mendeteksi hubungan
atau pola. Karakteristik utama dari LSI adalah kemampuannya untuk mengambil
semantic dari dataset dan membangun hubungan antara istilah dengan konteks yang
mirip seperti pada ilustrasi di bawah ini.LSI mengkategorikan atau mengindeks
comment yang dibuat audience menjadi kesukaan audience, harapan audience, dan
hasil dari season. Hal ini mempermudah director untuk memberikan keputusan untuk
memperbaiki season selanjutnya.

COMP8025 Big Data Analytics


2.Hidden Markov Model(HMM) merupakan indexing yang dibuat dari Markov
model. Markov model dibuat dari state yang terhubung dengan transisi, di mana state
di masa depan tergantung dari state yang sekarang dan independen historical state.
Mirip dengan LSI, HMM menggunakan pengenalan pola dan relasi antar data. Pada
pendekatan indexing HMM data atau karakteristik di mana state yang tergantung
selama query dikategorikan dan disimpan di muka.

Contoh indexing menggunakan pendekatan non Artificial Inteligence:


1. Tree base indexing strategies.
Indexing berbasis tree memiliki beberapa jenis yaitu B-tree,R-tree dan X-tree.
a. B-tree bekerja seperti binary search tree yang lebih kompleks karena memiliki
node yang memiliki banyak cabang. B-tree index memenuhi range queries dan
kesamaan query yang juga disebut Nearest Neighbour Search(NNS) menggunakan
operator komparasi(<,<=,=,>,>=). Pada B-tree key dan record disimpan di leaves
akan tetapi copy dari dari key disimpan pada internal nodes.

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.

COMP8025 Big Data Analytics


c. X-tree merupakan indexing strategi yang sama dengan R-tree yang memiliki
dimensi lebih banyak dari R-tree akan tetapi X-tree menggunakan space memory
lebih banyak untuk menyimpan koordinat.

2. Hash Indexing Strategy:


Hash indexing mempercepat pengambilan informasi dengan mendeteksi duplikat
pada dataset yang besar. Hash digunakan dalam big data indexing untuk mengindex
dan mendapatkan data item dari dataset yang mirip dengan item yang dicari. Hash
indexing strategy (mengunakan hashed key yang dikomputasi dari hash function
dan biasanya lebih pendek dari nilai sebenarnya) untuk menyimpan dan mengambil
index. Hash indexing lebih efisien daripada tree based indexing.

3. Custom Indexing Strategy:


Custom indexing mensupport multiple field indexing berdasarkan random atau
pilihan dari user yang berdasarkan dari indexing strategi seperti B-tree, R-tree,
inverted index dan hash indexing strategi. Terdapat 2 jenis Custom Indexing
Strategy yaitu : GiST(Generalized Search Tree) dan Generalized Inverted
Index(GIN).
a.GiST (Generalized Search Tree) merupakan indexing strategi berdasarkan B-tree atau
R-tree yang dapat membuat custom atau random field sebagai index. GiST memiliki
implementasi yang sama untuk indexing dan retrieval dengan R-Tree atau B-Tree.

b.GIN(Generalized Inverted Index) menggunakan custom atau random field sebagai


index didesain untuk kebutuhan user yang spesifik. Implementasi GIN mirip dengan B-tree
dan mempunyai property index yang terbalik.

COMP8025 Big Data Analytics


4. Inverted Index Strategy mengijinkan desain dari index yang terbalik yang
digunakan untuk pencarian full text seperti yang didapatkan oleh google atau search
engine lainnya. Inverted index dibuat dari list kata yang unik yang muncul pada
dokumen. Dengan inverted index maka multiple dokumen dapat memiliki kunci
yang sama dan juga multiple key dapat digunakan untuk indexing sebuah dokumen.
Sebagai contoh sebuah post di blog dapat memiliki multiple tag(key) dan setiap tag
dapat menunjuk lebih dari 1 post di blog. Implementasi Inverted indexing dengan
menyimpan atau mengindeks sebuah pasangan set key dan post dimana key
merupakan index yang dapat dicari dan list post merupakan koleksi dokumen
dimana key muncul.

COMP8025 Big Data Analytics

Anda mungkin juga menyukai