0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan

10. Big Data Analytics Apache Spark - Lecture Notes

Dokumen ini membahas arsitektur dan infrastruktur Big Data dengan fokus pada Apache Spark dan SparkML. Materi mencakup pengantar Big Data, karakteristik, teknologi, siklus hidup, serta tantangan yang dihadapi, dan menjelaskan berbagai komponen Spark seperti Spark Core, Spark Streaming, dan Spark MLlib. Selain itu, terdapat penjelasan tentang operasi Spark, model regresi linier, dan contoh penggunaan Spark MLlib dalam pengelompokan data.
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan

10. Big Data Analytics Apache Spark - Lecture Notes

Dokumen ini membahas arsitektur dan infrastruktur Big Data dengan fokus pada Apache Spark dan SparkML. Materi mencakup pengantar Big Data, karakteristik, teknologi, siklus hidup, serta tantangan yang dihadapi, dan menjelaskan berbagai komponen Spark seperti Spark Core, Spark Streaming, dan Spark MLlib. Selain itu, terdapat penjelasan tentang operasi Spark, model regresi linier, dan contoh penggunaan Spark MLlib dalam pengelompokan data.
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 22

LECTURE NOTES BIG DATA ARCHITECTURE & INFRASTRUCTURE

MATA KULIAH : BIG DATA ARCHITECTURE & INFRASTRUCTURE


SESI PERTEMUAN : X (SEPULUH)
MATERI : Big Data Analytics (Apache Spark & SparkML)
DOSEN : SOMANTRI, ST, M.Kom

OUTLINE MATERI (Sub-Topic):


• Pengantar Big Data
• Karakteristik Big Data
• Teknologi Big Data
• Siklus Hidup Big Data
• Tantangan yang Dihadapi Teknologi Big Data
• Arsitektur Big Data
• Contoh Big Data

1. Apache Spark
Apache Spark adalah kerangka kerja komputasi cluster open-source untuk analisis data.
Spark mendukung komputasi cluster dalam memori dan berjanji akan lebih cepat daripada
Hadoop. Spark mendukung berbagai alat tingkat tinggi untuk analisis data seperti Spark
Streaming untuk tugas streaming, Spark SQL untuk analisis data terstruktur, perpustakaan
pembelajaran mesin MLlib untuk Spark, dan GraphX untuk pemrosesan grafik. Spark
memungkinkan kueri real-time, batch, dan interaktif serta menyediakan API untuk bahasa
Scala, Java, dan Python.

Pic 8.1 Spark tools


Source: Big Data Science & Analytics: A Hands-On Approach Basic Statistics., 2016.

• Spark Core: Spark Core menyediakan fungsionalitas umum (seperti penjadwalan tugas
dan input/output), yang digunakan oleh komponen Spark lainnya. Spark menyediakan
abstraksi data yang disebut dataset terdistribusi tangguh (RDD) yang merupakan
kumpulan elemen yang dipartisi di seluruh node dalam cluster Spark. Elemen RDD dapat
dioperasikan secara paralel dalam cluster. RDD adalah koleksi objek yang tidak dapat
diubah dan didistribusikan.
• Spark Streaming: Spark Streaming adalah komponen Spark untuk analisis data
streaming seperti data sensor, data clickstream, log server web, dll.
• Spark SQL: Spark SQL adalah komponen Spark yang memungkinkan kueri data
interaktif menggunakan kueri SQL.
• Spark MLlib: Spark MLlib adalah Spark machine learning library yang menyediakan
implementasi algoritma pembelajaran mesin yang umum digunakan untuk
pengelompokan, klasifikasi, regresi, pemfilteran kolaboratif, dan pengurangan dimensi.
• Spark GraphX: Spark GraphX adalah komponen untuk melakukan perhitungan grafik.
GraphX menyediakan implementasi algoritma grafik umum seperti PageRank,
komponen terhubung, dan penghitungan segitiga.

Pic 8.2 Components of a Spark cluster


Source: Big Data Science & Analytics: A Hands-On Approach Basic Statistics., 2016.

Gambar 8.2 menunjukkan komponen cluster Spark. Setiap aplikasi Spark terdiri dari
program driver dan dikoordinasikan oleh objek SparkContext. Spark mendukung berbagai
manajer cluster termasuk manajer cluster mandiri Spark, Apache Mesos, dan Hadoop
YARN. Manajer cluster mengalokasikan sumber daya untuk aplikasi pada node pekerja.
Pelaksana yang dialokasikan pada node pekerja menjalankan kode aplikasi sebagai banyak
tugas. Aplikasi diisolasi satu sama lain dan dijalankan dalam proses pelaksananya sendiri di
node pekerja.

2. Spark dalam Google Collab


Untuk menjalankan percikan di Colab, pertama-tama, kita perlu menginstal semua
dependensi di lingkungan Colab seperti Apache Spark 2.3.2 dengan Hadoop 2.7, Java 8, dan
Findspark untuk menemukan percikan di sistem. Instalasi alat dapat dilakukan di dalam
Notebook Jupyter dari Colab.
Colab kami siap menjalankan PySpark. Mari kita membangun model Regresi Linier
sederhana.
a. Model Regresi Linier
Model Regresi Linier adalah salah satu pendekatan pembelajaran mesin tertua dan banyak
digunakan yang mengasumsikan hubungan antara variabel dependen dan independen.
Misalnya, seorang pemodel mungkin ingin memprediksi ramalan hujan berdasarkan rasio
kelembaban. Regresi Linier terdiri dari garis pas terbaik melalui titik-titik yang tersebar pada
grafik dan garis pas terbaik dikenal sebagai garis regresi.

Tujuan dari latihan ini adalah untuk memprediksi harga perumahan dari fitur yang diberikan.
Mari kita prediksi harga dataset Boston Housing dengan mempertimbangkan MEDV sebagai
variabel target dan semua variabel lainnya sebagai fitur input.
Kami dapat mengunduh kumpulan data dari Link ini dan menyimpannya di suatu tempat
yang dapat diakses di drive lokal. Kumpulan data dapat dimuat di direktori Colab
menggunakan perintah berikut dari drive yang sama.

Sekarang dapat memeriksa konten direktori Colab

Kita akan melihat file bernama BostonHousing.csv disimpan. Sekarang setelah berhasil
mengunggah kumpulan data, kitai dapat mulai menganalisisnya.
Untuk model regresi linier, kita perlu mengimpor modul Vector Assembler dan Regresi
Linier dari API PySpark. Vector Assembler adalah alat transformator yang merakit semua
fitur menjadi satu vektor dari beberapa kolom yang berisi tipe ganda. Kita seharusnya

menggunakan (harus menggunakan) StringIndexer jika salah satu kolom kita berisi nilai
string untuk mengubahnya menjadi nilai numerik. Untungnya, dataset BostonHousing hanya
berisi tipe double, jadi kita bisa melewati StringIndexer untuk saat ini.
Mari kita cetak melihat ke dalam dataset untuk melihat tipe data dari setiap kolom:

Mencetak tipe data sebagai berikut:

Pada langkah selanjutnya, kita akan mengonversi semua fitur dari kolom yang berbeda
menjadi satu kolom dan kita dapat memanggil kolom vektor baru 'Atribut' di outputCol.

Di sini, 'Atribut' adalah fitur input dari semua kolom dan 'medv' adalah kolom target.
Selanjutnya, kita harus membagi data pelatihan dan pengujian sesuai dengan dataset kita
(dalam hal ini 0.8 dan 0.2).
Skor prediksi pada kolom prediksi sebagai output:

Kita juga dapat mencetak koefisien dan intersep model regresi dengan menggunakan
perintah berikut:

Setelah kita selesai dengan operasi regresi linier dasar, kita dapat melangkah lebih jauh dan
menganalisis model kita secara statistik dengan mengimpor modul RegressionEvaluator dari
Pyspark.

3. Operasi Spark
Spark RDD mendukung dua jenis operasi:
• Transformasi: Transformasi digunakan untuk membuat kumpulan data baru dari yang
sudah ada.
• Actions: Tindakan mengembalikan nilai ke program driver setelah menjalankan
komputasi pada kumpulan data.

a. Transformasi
Mari kita lihat beberapa transformasi yang umum digunakan dengan contoh. Sebagai contoh,
kita akan menggunakan tiga set data seperti yang ditunjukkan di bawah ini:

1) Map
Transformasi map mengambil sebagai input sebuah fungsi yang diterapkan ke setiap
elemen dataset dan memetakan setiap item input ke item lain.

2) Filter
Transformasi filter menghasilkan kumpulan data baru dengan memfilter kumpulan data
sumber menggunakan fungsi yang ditentukan.

3) reduceByKey
Transformasi reduceByKey saat diterapkan pada kumpulan data yang berisi pasangan
nilai kunci, nilai agregat dari setiap kunci menggunakan fungsi yang ditentukan.

4) flatMap
Transformasi flatMap mengambil sebagai input fungsi yang diterapkan ke setiap elemen
dataset. Transformasi flatMap dapat memetakan setiap item input ke nol atau lebih item
output.
5) Sample
Transformasi sampel mengambil sampel data dengan atau tanpa penggantian.

6) Union
Transformasi union menghasilkan kumpulan data baru dari gabungan dua kumpulan
data.

7) Intersection
Transformasi intersection menghasilkan dataset baru dari persimpangan dua dataset.

8) Join
Transformasi join menghasilkan kumpulan data baru dengan menggabungkan dua
kumpulan data yang berisi pasangan nilai kunci.

b. Action
Beberapa action yang umum digunakan dengan contoh:
1) Reduce
Reduce menggabungkan elemen-elemen dalam kumpulan data menggunakan fungsi
yang ditentukan.

2) Collect
Collect digunakan untuk mengembalikan semua elemen hasil sebagai array.

3) Count
Count mengembalikan jumlah elemen dalam kumpulan data.

4) First
First Mengembalikan elemen pertama dalam kumpulan data.

5) Take
Take mengembalikan n elemen pertama dalam kumpulan data.

6) takeSample
takeSample mengembalikan sampel yang berisi sejumlah elemen tertentu dari kumpulan
data dengan atau tanpa penggantian.

7) saveAsTextFile
saveAsTextFile menulis elemen dalam kumpulan data ke file teks baik pada sistem file
lokal atau HDFS.

8) saveAsSequenceFile
saveAsSequenceFile action menulis elemen dalam kumpulan data ke Hadoop
SequenceFile pada sistem file lokal atau HDFS.

Sekarang mari kita lihat aplikasi Spark mandiri yang menghitung jumlah kata dalam file.
Kotak 7.19 menunjukkan program Python untuk menghitung jumlah kata. Program ini
menggunakan map dan reduce fungsi. Transformasi flatMap dan map mengambil sebagai
input fungsi yang diterapkan ke setiap elemen dataset. Sementara fungsi flatMap dapat
memetakan setiap item input ke nol atau lebih item output, fungsi map memetakan setiap
item input ke item lain. Transformasi mengambil sebagai input, fungsi yang diterapkan pada
elemen data. Fungsi input dapat berupa ekspresi lambda Python atau fungsi lokal. Dalam
contoh jumlah kata, flatMap mengambil input ekspresi lambda yang membagi setiap baris
file menjadi kata-kata. Transformasi map menghasilkan pasangan nilai kunci di mana
kuncinya adalah sebuah kata dan nilainya adalah
1. Transformasi reduceByKey menggabungkan nilai dari setiap kunci menggunakan fungsi
yang ditentukan (tambahkan fungsi dalam contoh ini). Akhirnya, tindakan kumpulkan
digunakan untuk mengembalikan semua elemen hasil sebagai array.

4. Spark ML
Spark ML menstandarisasi API untuk algoritme pembelajaran mesin agar lebih mudah
menggabungkan beberapa algoritme ke dalam satu alur, atau alur kerja. Konsep utama yang
diperkenalkan oleh Spark ML API.
• ML Dataset: Spark ML menggunakan SchemaRDD dari Spark SQL sebagai dataset
yang dapat menampung berbagai tipe data. Misalnya, kumpulan data dapat memiliki
kolom berbeda yang menyimpan teks, vektor fitur, label sebenarnya, dan prediksi.
• Transformer: Transformer adalah algoritma yang dapat mengubah satu SchemaRDD
menjadi SchemaRDD lain. Misalnya, model ML adalah Transformer yang mengubah
RDD dengan fitur menjadi RDD dengan prediksi.
• Estimator: Estimator adalah algoritma yang dapat ditampung pada SchemaRDD untuk
menghasilkan Transformer. Misalnya, algoritma pembelajaran adalah Penaksir yang
melatih pada kumpulan data dan menghasilkan model.
• Pipeline: Sebuah Pipeline menyatukan beberapa Transformer dan Estimator untuk
menentukan alur kerja ML.
• Param: Semua Transformer dan Estimator sekarang berbagi API umum untuk
menentukan parameter.
MLlib adalah Spark’s machine learning (ML) library. Tujuannya adalah membuat
pembelajaran mesin yang praktis dapat diskalakan dan mudah. Pada tingkat tinggi, ia
menyediakan alat-alat seperti:
• Algoritma ML: algoritma pembelajaran umum seperti klasifikasi,
regresi, pengelompokan, dan penyaringan kolaboratif
• Featurization: ekstraksi fitur, transformasi, pengurangan dimensi, dan seleksi
• Pipeline: alat untuk membuat, mengevaluasi, dan menyetel Pipeline ML
• Persistence: menyimpan dan memuat algoritme, model, dan Pipeline
• Utilitas: aljabar linier, statistik, penanganan data, dll.

5. Spark MLlib
Spark MLlib adalah perpustakaan pembelajaran mesin Spark yang menyediakan
implementasi berbagai algoritma pembelajaran mesin termasuk klasifikasi, regresi,
pengelompokan, pemfilteran kolaboratif, dan pengurangan dimensi. MLlib API dibangun di
atas resilient distributed datasets (RDDs) Spark yang tangguh. MLlib juga menyediakan tipe
data tingkat tinggi seperti Vector, LabeledPoint, Rating, dan Matrix, yang didukung oleh
RDD. Manfaat menggunakan MLlib dibandingkan library machine learning adalah
menyediakan implementasi paralel dari algoritme pembelajaran mesin dan dapat memproses
kumpulan data terdistribusi yang besar. Spark MLlib menyediakan API untuk bahasa
pemrograman Python, Scala, dan Java. Gambar 8.3 menunjukkan berbagai komponen Spark
MLlib.

Pic 8.3 Spark MLlib components


Source: Big Data Science & Analytics: A Hands-On Approach Basic Statistics., 2016.

6. Statistik Dasar
a. Correlation
Menghitung korelasi antara dua seri data adalah operasi umum dalam Statistik. Di spark.ml
kami menyediakan fleksibilitas untuk menghitung korelasi berpasangan di antara banyak
seri. Metode korelasi yang didukung saat ini adalah korelasi Pearson dan Spearman.
b. Hypothesis testing
Pengujian hipotesis adalah alat yang ampuh dalam statistik untuk menentukan apakah suatu
hasil signifikan secara statistik, apakah hasil ini terjadi secara kebetulan atau tidak. spark.ml
saat ini mendukung uji Chi-squared (χ2) Pearson untuk independensi.

c. Summarizer
statistik ringkasan kolom vektor untuk Dataframe melalui Summarizer. Metrik yang tersedia
adalah kolom-bijaksana maks, min, rata-rata, jumlah, varians, std, dan jumlah bukan nol,
serta jumlah total.
7. Klasifikasi
a. Binomial logistic regression
cara melatih model regresi logistik binomial dan multinomial untuk klasifikasi biner dengan
regularisasi jaring elastis. elasticNetParam sesuai dengan dan regParam sesuai dengan .
LogisticRegressionTrainingSummary menyediakan ringkasan untuk
LogisticRegressionModel. Dalam kasus klasifikasi biner, metrik tambahan tertentu tersedia,
mis. kurva ROC. Lihat BinaryLogisticRegressionTrainingSummary.
b. Multinomial logistic regression
Klasifikasi multikelas didukung melalui regresi logistik multinomial (softmax). Dalam
regresi logistik multinomial, algoritma menghasilkan himpunan K koefisien, atau matriks
berdimensi K×J di mana K adalah jumlah kelas hasil dan J adalah jumlah fitur. Jika algoritme
cocok dengan suku intersep maka tersedia vektor intersep dengan panjang K.
Koefisien multinomial tersedia sebagai coefficientMatrix dan intersep tersedia sebagai
InterceptVector.
koefisien dan metode intersep pada model regresi logistik yang dilatih dengan keluarga
multinomial tidak didukung. Gunakan koefisienMatrix dan intersepVector sebagai gantinya.
Probabilitas bersyarat dari kelas hasil k∈1,2,…,K dimodelkan menggunakan fungsi
softmax.

Meminimalkan kemungkinan log negatif tertimbang, menggunakan model respons


multinomial, dengan penalti elastis-net untuk mengontrol overfitting.
c. Naive Bayes
Pengklasifikasi Naive Bayes adalah keluarga probabilistik sederhana, pengklasifikasi
multikelas berdasarkan penerapan teorema Bayes dengan asumsi independensi yang kuat
(naif) antara setiap pasangan fitur.
Naive Bayes dapat dilatih dengan sangat efisien. Dengan satu kali melewati data pelatihan,
ia menghitung distribusi probabilitas bersyarat dari setiap fitur yang diberikan setiap label.
Untuk prediksi, ini menerapkan teorema Bayes untuk menghitung distribusi probabilitas
bersyarat dari setiap label yang diberikan pengamatan.
8. Regresi
a. Linear regression
Antarmuka untuk bekerja dengan model regresi linier dan ringkasan model mirip
dengan kasus regresi logistik.
Saat memasang LinearRegressionModel tanpa intersep pada dataset dengan kolom
konstanta bukan nol dengan pemecah “l-bfgs”, Spark MLlib mengeluarkan
koefisien nol untuk kolom bukan nol konstan. Perilaku ini sama dengan R glmnet
tetapi berbeda dari LIBSVM.
b. Decision tree regression
Decision trees adalah keluarga populer dari metode klasifikasi dan regresi. Contoh berikut
memuat set data dalam format LibSVM, membaginya menjadi set pelatihan dan pengujian,
melatih pada set data pertama, lalu mengevaluasi pada set pengujian yang ditunda. Dengan
menggunakan transformator fitur untuk mengindeks fitur kategoris, menambahkan metadata
ke DataFrame yang dapat dikenali oleh algoritma Pohon Keputusan.
9. Contoh Spark MLlib
Kotak 11.3 menunjukkan program Python untuk mengelompokkan data menggunakan Spark
MLlib. Spark MLlib menyertakan implementasi paralel k-means yang dapat digunakan
untuk mengelompokkan data besar. Program ini dapat dijalankan di shell PySpark. Dalam
program ini, kami mengimplementasikan fungsi parseVector yang mengambil setiap baris
dari file input, membagi baris menjadi kolom individual yang dipisahkan dengan koma,
mengubah nilai menjadi float, dan mengembalikan array numpy Python. Kelas KMeans dari
modul pengelompokan MLlib digunakan untuk membangun model pengelompokan k-
means. Setelah model dibangun, metode clusterCenters dari kelas KMeans dapat digunakan
untuk melihat pusat cluster.

Kotak 11.10 menunjukkan program Python untuk klasifikasi Naive Bayes menggunakan
Spark MLlib. Program ini dapat dijalankan di shell PySpark. Dalam program ini
mengimplementasikan fungsi parseLine yang mengambil setiap baris dari file input,
membagi baris menjadi kolom individual yang dipisahkan oleh koma, mengubah nilai
menjadi float dan mengembalikan array numpy Python. Dalam fungsi ini, kami juga
mengubah label anggur dari 1.0, 2.0 dan 3.0 menjadi 0.0, 1.0 dan 2.0 karena implementasi
Spark dari Naive Bayes mengharapkan label dari 0 ke N-1 di mana N adalah jumlah total
kelas dalam data.
Kelas NaiveBayes dari modul klasifikasi MLlib digunakan untuk membangun model Naive
Bayes. Setelah model dibangun, metode prediksi dari kelas NaiveBayes dapat digunakan
untuk membuat prediksi. Akhirnya, kami membandingkan label dalam kumpulan data uji

dan label yang diprediksi dan menghitung kesalahan uji dan keakuratan model.
SIMPULAN
• Spark.ml adalah paket baru yang diperkenalkan di Spark 1.2, yang bertujuan untuk
menyediakan serangkaian API tingkat tinggi yang seragam yang membantu pengguna
membuat dan menyempurnakan alur pembelajaran mesin yang praktis. Saat ini
merupakan komponen alfa, dan kami ingin mendengar kabar dari komunitas tentang
kesesuaiannya dengan kasus penggunaan di dunia nyata dan bagaimana hal itu dapat
ditingkatkan.
• Spark MLlib adalah perpustakaan pembelajaran mesin Spark yang menyediakan
implementasi berbagai algoritme pembelajaran mesin termasuk klasifikasi, regresi,
pengelompokan, pemfilteran kolaboratif, dan pengurangan dimensi. MLlib API
dibangun di atas resilient distributed datasets (RDDs) Spark.

DAFTAR PUSTAKA
• Arshdeep Bahga & Vijay Madisetti. (2016). Big Data Science & Analytics: A Hands-
On Approach. 1st E. VPT. India. ISBN: 9781949978001. Chapter 7 & 11.
• https://www.youtube.com/watch?v=9MeMWdILl5Q
• https://www.youtube.com/watch?v=DBxcua0Vmvk
• https://www.youtube.com/watch?v=_kFNxF2MM_M
• https://towardsdatascience.com/pyspark-in-google-colab-6821c2faf41c
• https://onlinestatbook.com/2/regression/intro.html
• https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html
• https://github.com/asifahmed90/pyspark-ML-in-
Colab/blob/master/BostonHousing.csv
• https://spark.apache.org/
• https://spark.apache.org/docs/latest/ml-statistics.html.
• https://towardsdatascience.com/pyspark-in-google-colab-6821c2faf41c
• https://spark.apache.org/docs/1.2.2/ml-guide.html
• https://spark.apache.org/docs/latest/ml-guide.html

Anda mungkin juga menyukai