DATAFRAME DALAM SPARK

Tantangan Menulis Hari ke-127

Oleh: Bernardus Ari Kuncoro

Dalam Spark, struktur data yang utama disebut sebagai RDD atau Resilient Distributed Dataset. RDD ini merupakan obyek yang paling bawah (low level) sedemikian sehingga Spark dapat bekerja memecah-mecahkan data ke setiap node dalam sebuah kluster. Namun, pengerjaan langsung dengan RDD ini termasuk ribet alias sulit, sehingga Spark DataFrame disarankan untuk dipelajari. Spark DataFrame ini dibuat di atas RDD.

Spark DatafFrame ini dirancang untuk memiliki perilaku yang mirip dengan tabel SQL. Tidak hanya mudah untuk dipahami, DataFrame secara operasi juga dapat dioptimasi ketimbang menggunakan RDD secara langsung.

Untuk mulai ngulik Spark DataFrame, Anda harus membuat sebuah obyek SparkSession dari SparkContext. SparkContext sebagai koneksi Anda ke kluster. Sedangkan SparkSession ini adalah interface Anda dengan koneksi tersebut. Ibarat kata Anda sedang menangani beragam kamera yang terpasang di seluruh kota, dan Anda berada di sebuah ruang kendali. Kabel-kabel yang terhubung ke CCTV dapat Anda analogikan sebagai SparkContext. Sedangkan ruang kendali yang sedang menyala adalah SparkSession.

Disadur dan diterjemahkan dari Kursus Daring Datacamp: Introduction to Pyspark

Kalideres, 4 Agustus 2021

APA BEDA ANTARA STRUCTURED DAN UNSTRUCTURED DATA?

Tantangan Menulis Hari Ke-49 Batch Kedua

Oleh Bernardus Ari Kuncoro

Dalam sebuah kesempatan mewawancarai kandidat data engineer, saya mencoba menanyakan pertanyaan ini. Beda antara data yang terstruktur dan yang tidak terstruktur.

Dengan mengetahui jawabannya dengan benar atau salah, pasti langsung ketahuan dia pernah pegang database untuk OLAP Big Data atau belum. Yuk, kita pelajari sebentar, bedanya apa sih.

Structured big data dapat disimpan di dalam database tradisional. Seperti apa? OracleDB, MySQL, PostgreSQL, SQL Server, dll. Dapat disimpan dalam bentuk baris dan kolom. Sebagian besar transaksi dari aplikasi adalah data yang terstruktur. Data dengan bentuk ini akan sangat mudah didefinisikan dalam sebuah data model.

Unstructured data tidak dapat disimpan dalam rupa kolom dan baris. Sedemikian sehingga sistem database tradisional tidak dapat menyimpannya. Secara umum, memiliki ukuran dan konten yang sangat bervariasi. Beberapa contoh data tidak terstruktur adalah file logs, cuitan Twitter, Facebook likes, gambar, video, pencarian di mesin Google. Sebagian besar data dari Internet of Things adalah data yang tidak terstruktur. Sangat sulit untuk mendefinisikan data tidak terstruktur ini ke dalam data model. Beberapa tool yang mendukung data tidak terstruktur ini adalah MongoDB, Cassandra, GeoJS, dll. Seperti yang pernah saya tulis di sini tentang NoSQL.

Kalau ada kandidat yang mencampuradukkan antara structured data dengan data input supervised learning, yang katanya didefinisikan sebagai data yang ada label. Yo wes, salah kaprah!

Berdasarkan kisah nyata.

Kalideres, 18 Mei 2021.

Referensi:

Buku Top 200 Data Engineer Interview Questions Answers

NORMALISASI DAN DENORMALISASI DALAM DATA MODELING

Tantangan Menulis Hari ke-181 

Oleh: Bernardus Ari Kuncoro

Normal. Sebuah kata yang sering digunakan untuk kepentingan politik Jakarta beberapa tahun silam. Penggunaannya dirangkaikan dengan imbuhan -isasi dan sebuah kata benda yaitu sungai. Tertulis sebagai normalisasi sungai. 

Eiiits, tenang. Ini bukan tentang politik. Dunia yang sulit ditebak ending-nya. Banyak variabel kepentingan yang terlibat di dalamnya.

Anyway, normalisasi dan denormalisasi ini juga ada maknanya dalam dunia data. Terutama terkait data modeling. Coba Anda perhatikan gambar berikut. 

1 Database Design and Development: A Visual Approach © 2006 Prentice Hall  Chapter 4 DATABASE DESIGN AND DEVELOPMENT: A VISUAL APPROACH Chapter 4  Normalization. - ppt download

Kira-kira hal penting apa yang dapat Anda tarik?

Gambar di atas menujukkan bahwa normalisasi adalah sebuah proses untuk menstrukturkan database agar redundansi data yang tertulis didalam sebuah tabel dapat dihilangkan. Fokusnya menghilangkan database dari data-data yang tidak berguna dan untuk menurunkan inconsistency. 

Sebaliknya, denormalisasi dilakukan untuk mengkombinasikan tabel dua atau lebih sedemikian sehingga dapat di-query secara cepat. 

Wah, musim hujan tiba. Apa kabar ya, program normalisasi sungai di Jakarta?¬†Mudah-mudahan tidak banyak sampah yang ‘tertimbun’ di sana.¬†Reduce¬†the dirt and inconsistency.¬†

awsimages.detik.net.id/visual/2018/11/03/28e597...
Sumber: CNBC Indonesia

Kalideres, 28 Januari 2021

MENGENAL APACHE CASSANDRA

Mengenal Apache Cassandra

Tantangan Menulis Hari ke-156

Oleh: Bernardus Ari Kuncoro

Ada pepatah “Tak kenal maka tak sayang”. Hal ini berlaku juga ketika Anda mengenal suatu sistem database. Kali ini saya ingin memperkenalkan Anda dengan Apache Cassandra. Suatu sistem database yang ditujukan untuk kemudahan proses scalability dan memiliki high availability, tanpa mengesampingkan performa.

Tahukah Anda, bahwa Apache Cassandra menggunakan bahasa query CQL? CQL (dibaca si kyu el) Cassandra Query Language. Pada dasarnya, CQL ini mirip dengan SQL.

Perusahaan apa saja yang memanfaatkan Apache Cassandra?

Aplikasi Uber
Layanan Netflix
  1. Uber menggunakan Apache Cassandra untuk backend
  2. Netflix menggunakaannya untuk melayani pelanggan ketika streaming video

Use case apa saja yang dapat ditalangi oleh NoSQL (dalam hal ini Apache Cassandra)

  1. Pencatatan transaksi (retail, health care, toko online)
  2. Internet of Things (IoT)
  3. Data timeseries
  4. Beban kerja apapun yang berat ketika menuliskannya ke dalam database.

Apakah Apache Cassadra memiliki hambatan untuk pekerjaan analitik? Ya, akan ada. Seperti ketika Anda menggunakan statement GROUP BY. Mengingat Apache Cssandra membutuhkan data modeling berdasarkan query yang Anda mau, Anda tidak dapat melakukan queries ketika sekonyong-konyong dibutuhkan. Akan tetapi, Anda dapat menambahkan kolom-kolom clustering pada data model dan dan membuat tabel-tabel baru.

QUIZ

Kapan Anda sebaiknya menggunakan Database NoSQL?

  1. Saat data yang akan digunakan sangat besar
  2. Ketika akan melakukan agregasi
  3. Pada saat Anda membutuhkan availability tingkat tinggi
  4. Waktu Anda butuh scale out segera
  5. Ketika Anda butuh untuk melakukan join ke beberapa tabel

Hint: Anda sebaiknya tetap menggunakan relational database untuk proses join dan agregasi, terutama untuk data yang tidak terlalu besar. Namun, NoSQL sangat mumpuni jika datanya besar, butuh high scalability dan scale out segera.

Jadi jawabannya? Silakan direnungkan. Ada tiga jawaban yang benar.

Disadur dan diterjemahkan dari Data Engineering Nanodegree Udacity.

Kalideres, 3 Januari 2020

BICARA TENTANG NOSQL

Not only SQL

Tantangan Menulis Hari ke-155

Oleh: Bernardus Ari Kuncoro

NoSQL merupakan singkatan dari Not Only Structured Query Language. Database NoSQL menyediakan mekanisme untuk penyimpanan dan pengambilan data yang dimodelkan dengan cara yang berbeda dari relasi tabular yang digunakan pada relational databases. Istilah NoSQL mulai digunakan sejak 1970, tetapi baru naik daun pada 2000-an.

Bermacam-macam variasi No-SQL mulai dari Document store, graph, key-value, dan wide-column.

Ada banyak variasi NoSQL. Apa saja?

  1. Apache Cassandra (Partition Row store). Data didistribusikan berdasarkan partisi ke dalam beberapa node atau server. Diatur dalam format kolom dan baris.
  2. MongoDB (Document store). Merupakan database berorientasi dokumen. Selain adanya Key Lookups yang dilakukan oleh key-value store, database ini juga menawarkan API atau query language yang akan mengeluarkan dokumen berdasarkan apa yang ada di dalam database. Bayangkan Anda memaknai proses ini sebagai pencarian dari kumpulan dokumen-dokumen.
  3. DynamoDB (Key-value store). Database yang terkumpul berdasarkan pasangan-pasangan antara key dan value.
  4. Apache HBase (Wide Column Store). Menariknya dari database ini selain kolomnya ‘melebar’ adalah nama kolom dari baris ke baris dapat berbeda-beda.
  5. Neo4J (Graph Database). Dalam database ini, data direpresentasikan oleh nodes dan edges.

Perlu diingat bahwa Anda tidak perlu menghafal semua variasi NoSQL di atas. Peruntukannya berbeda-beda tergantung kebutuhan. Anda dapat memulainya dengan Apache Cassandra, karena memiliki kedekatan dengan Relational Database. Mengingat bentuknya masih tabel. Selebihnya, tetap harus belajar untuk memahami masing-masing karakteristiknya, namun proses belajar jadi lebih mudah.

Sebagai pengayaan, Anda dapat merenungi gambar berikut.

Penggunaan NoSQL dan SQL yang bervariasi

Disadur dan diterjemahkan dari Data Engineering Nanodegree by Udacity.

Kalideres, 2 Januari 2021

Kembali Mengajar, karena Diundang

Tahun 2018 sudah memasuki bulan Maret. Tak terasa. Jakarta masih saja panas, sehingga membuat sebagian besar penduduknya harus menyamankan diri dengan Air Conditioner (AC).¬† Tak terkecuali saya.¬†Sebagai catatan pada saat saya menuliskan postingan ini, AC kamar tidur bocor dan belum sempat dibersihin karena tukangnya sibuk. Sudah hampir sebulan kejadian ini berlangsung, sehingga harus kita tampung dengan ember. lol. Dan pagi dini hari ini ceritanya epik, posisi embernya nggak pas… alhasil lantai basah dan mesti nge-pel di tengah tidur nyenyak ku.

Back to the topic about work.

Sejak bulan kedelapan di tahun yang lalu, saya mulai meniti karya di tempat yang baru. Artinya sudah tujuh bulan saya berkarya di tempat tersebut. Tidak mudah memang menjalaninya terutama dari sisi birokrasi yang terkesan kaku dan rempong dengan tetek bengeknya, per-HR-an yang tidak sesuai ekspektasi, dan beberapa alat penunjang kerja yang awalnya tidak memuaskan.

Tapi saya akan bertahan karena banyak positifnya. Orang-orang setim yang mau maju, mau memperbaiki, dan saling mendukung. Sepertinya Tuhan menjawab doa saya, mengingat di tahun 2017 saya tiga kali pindah kerja. Ini dia quote yang membuat saya kuat.

Saya percaya Tuhan pasti selalu menunjukkan jalan bagi orang yang percaya. Ibarat Musa ditunjukkan jalan oleh Tuhan untuk membebaskan kaum Israel dari perbudakan Mesir, demikian pula Tuhan menunjukkan saya jalan terbaik.

Kembali diminta mengajar.

Awal tahun 2017 ini saya mulai diminta untuk mengajar setelah rehat kira-kira hampir 9 bulan. Topiknya ya nggak jauh-jauh dari kerjaan tentang Data, R, SQL, Machine Learning, dan sebangsanya. Thank You IYKRA (Fajar dan Zizah) atas undangannya. Awalnya agak sulit, tapi kalau dijalani, ya OK juga. Saya sendiri merasakan dampak positif yang luar biasa, karena saya “dipaksa” untuk belajar, karena memang hal ini wajib dilakukan sebagai persiapan sebelum mengajar.

Selama dua bulan terakhir ini, saya sudah mengajar selama 4x. Lumayan banyak ya… Dan nanti bakalan ada lagi bulan April dan Mei. Terus terang saya senang mengingat hasilnya bisa dipakai untuk ganti dan pasang AC. ūüôā¬†But,¬†lebih dari itu, saya merasa senang kalau orang lain merasakan manfaat dari apa yang saya bagikan.

I believe I don’t have to wait until I am reach to share with others.

– BAK, 2018 –

Pertama, saya ngajar workshop di future force fair. Itu dihadiri oleh 180 peserta. Formatnya workshop tentang R. Anda bisa lihat materinya gratis tanpa dipungut pajak ataupun se-sen rupiah pun di sini. (Anda tinggal klik kanan, lalu “save Link as” atau “save target as”.

Ini beberapa foto saya ketika mengajar. Guanteng yo?

Kedua, saya ngajar ggplot2 dan dplyr. Materinya bisa didownload di sini.

Ketiga, saya ngajar sql for data analisis. Materinya bisa didownload di sini.

Keempat, saya ngajar advanced sql. Materinya bisa didownload di sini.

There will be more interesting story to tell when I teach and give speech. So, stay tuned!