Melanjutkan tulisan yang lalu (https://rahmadya.com/2014/04/04/mengimpor-big-data-ke-matlab/) tentang import big data ke Matlab, saya akan sharring suka dukanya mengolah big data dengan Matlab. Setelah berhasil meramu kode untuk mencari data dan mengumpulkannya dalam satu tabel untuk data kecil, ketika diterapkan ke data besar muncul masalah besar juga. Mencari 2 juta nama yang memiliki kemiripan harus saya hentikan karena 14 jam baru selesai pengarang ke 16442 yang sedang dibandingkan ke pengarang ke 1.352.700. Tobat.
Algoritmanya sederhana, misalnya kita punya 4 nama A,B,C dan D. Akan kita cek apakah di antara 4 nama itu ada sama nama belakangnya. Alurnya adalah A dibandingkan dengan B, C, dan D. Berikutnya B dibandingkan dengan C, dan D. Terakhir C dibandingkan dengan D. Jika prosesnya memakan waktu sehari maka dapat saja kita pecah jadi misalnya dua proses. Proses pertama membandingkan A,B dengan B,C, D dan proses kedua membandingkan C,D dengan B,C,D. Maka waktu prosesnya diperkirakan jadi setengah hari. Jika dibagi menjadi empat proses, jauh lebih cepat lagi. Setelah diperoleh hasil, perlu satu kode untuk menggabungkan tabel-tabel hasil pencarian yang terpisah tersebut.
Apakah memerlukan komputer yang berbeda? Ternyata tidak, Matlab dapat dijalankan lebih dari satu jendela. Coba Anda buka Matlab Anda, kemudian Anda buka lagi Matlabnya, maka Anda telah menjalankan dua mesin Matlab. Hanya saja Anda harus membedakan variabel pada proses 1 dengan proses 2 karena akan bentrok nantinya, minimal membedakan current directory jika Anda malas merubah listing programnya. Oke, kita buat data baru ujicoba:
Berikutnya jalankan kode untuk mencari nama yang sama seperti tulisan yang lalu dengan bantuan fungsi strfind Matlab (https://rahmadya.com/2014/04/07/mencari-kata-dalam-text-dengan-matlab/). Misal saya memecah menjadi 2 maka dari total 20 nama, maka proses pertama i=1 sampai 10, proses kedua i=11 sampai 20.
Perhatikan untuk proses 1 diperoleh hasil yang banyak karena memang data cenderung terbagi dua karena sementara proses 2 hanya diperoleh satu yang sam yang kebetulan sudah diperoleh juga di proses 1. Seandainya data memang terbagi dua, maka proses 2 tidak menemukan kesamaan.