Scraping Data with Apache Nifi and Apace Solr

Putri Alvina Lutfiani
5 min readDec 5, 2020

Ini salah satu kerjaan data engineer. Please someone tell me how to write opening~

Jadi, elemen seperti Nifi, Solr, dan pendukungnya di-deploy ke environment-nya. Environment itu bisa menggunakan Apache Hadoop, pada umumnya. Elemen-elemen ini dibangun sebagai pengelola dan wadah dari big data dan konfigurasinya. Tapi, tidak semua engine data menggunakan produk-produk Apache ini (sejauh author liat), it’s just half examples.

Di sini, mau dibahas tentang basic schema of nifi and solr usage. Alurnya, data akan didapat melalui scraping menggunakan Python dengan library Scrapy. Data yang didapat akan dimasukkan ke dalam Apache Solr sebagai wadah untuk indexing. Tambahan, akan dijelaskan juga bagaimana accessing data dari Solr menggunakan R yang datanya bisa digunakan untuk diolah lebih lanjut. Semua itu dilakukan atau dieksekusi menggunakan Nifi, kecuali Solr ke R.

disclaimer: tapi author bukan seorang data engineer, pernah magang doang.

Apache Nifi

Apa sih Apache Nifi? Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic[1]. Jadi, seperti wadah untuk mengelola data mulai dari mana data didapatkan, diolah, hingga diatur outputnya mau ke mana.

Apache Solr

Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more[2]. Solr ini digunakan untuk indexing, strukturnya NoSQL, dan aksesnya menggunakan parameter query, recommended untuk search engine.

Do It.

Installing the resources.

  • Instal Nifi

Download nifi, extract, standby in bin directory, run run-nifi.bat (on Windows), on browser type “localhost:8080/nifi/” (default port, you can change the port).

  • Instal Solr

Download Solr, extract, run command prompt in bin directory, type “solr start” (on Windows), on browser type “http://localhost:8983/solr/”.

  • Instal library Scrapy (di Python)
  • Instal library Solrium (di R)

Create Scraping File with Python

Sebagai contoh scraping sederhana, di sini cukup gunakan library Scrapy.

Step 1, pilih direktori untuk membuat project scrapy, lalu ketik command berikut menggunakan Command Prompt:

scrapy startproject medscrap

*medscrap adalah nama project yang dibuat, bebas menggunakan nama sesuai kebutuhan.

Step 2, masuk pada direktori “spider” lalu buat file Python dengan ekstensi .py, masukkan script untuk scraping. Sebagai contoh:

Step 3, edit file settings.py dengan menambahkan 3 line berikut di bagian paling bawah.

FEED_FORMAT = ‘jsonlines’
FEED_URI = ‘stdout:’
LOG_LEVEL = ‘ERROR’

File scraping sudah siap digunakan. Untuk mengecek berhasil atau tidaknya, dapat dijalankan menggunakan Command Prompt dengan command sebagai berikut:

scrapy crawl wiki

kata “wiki” dalam command berasal dari variabel “name” yang ada pada class Crawls pada file med.py.

Create Solr

Buat core di dalam Solr menggunakan Command Prompt dengan command seperti berikut:

solr create -c med

*med adalah nama corenya, bisa diubah sesuai kebutuhan.

Note: Jika langsung di GUI pada browser biasanya error karena file konfigurasi bawaan yang dibutuhkan tidak otomatis dibuatkan.

Pada Solr, core yang sudah dibuat akan ada di Core Selector. Ketika dipilih, muncul overview, schema, dan menu lain untuk mengolah core ini termasuk query-ing. Core ini yang akan memuat data yang dihasilkan dari scraping.

Finally! Config the NIFI

Step 1, buat process group dengan drag Process Group dan drop di tengah workspace.

Step 2, masuk Process Group tersebut. Lalu buat masukkan beberapa processor. Pertama tambahkan processor bernama executeProcess dengan drag icon processor dan drop ke tengah workspace, lalu pada filter ketikan executeProcess, pilih, lalu klik ADD.

Step 3, klik kanan executeProcess, lalu lakukan beberapa konfigurasi. Pada tab SETTINGS, name boleh diubah sesuai nama yang diinginkan. Bagian terpenting adalah pada tab SCHEDULING, set jadwal berapa periode processor ini melakukan tugasnya. Dengan kata lain, penjadwalan script scraping di-running.

Step 4, set konfigurasi seperti gambar di bawah. Command dan Command Arguments mewakili command untuk running file scraping (yang jika di Command Prompt sudah disebutkan sebelumnya). Set Working Direktori dengan value berupa path di mana file scrapy diletakkan. Klik Apply.

Step 5, tambahkan processor baru yang bernama putSolrRecord, dan dua logAttribute.

Step 6, hubungkan processor seperti berikut. Perlu diperhatikan, untuk logAttribute sebelah kanan, pada saat dihubungkan, centang “connection_failure” dan “failure”. Sedangkan untuk logAttribute bawah, centang “success”.

Step 7, lakukan konfigurasi pada kedua logAttribute dengan centang opsi “success” pada Automatically terminate relationships.

Step 8, lakukan konfigurasi pada putSolrRecord. Pada tab SETTINGS, ubah nama processor sesuai keinginan (opsional). Bagian terpenting adalah pada tab PROPERTIES, setting hingga menjadi seperti berikut.

Note: Solr Location berisi url core di Solr yang sudah dibuat sebelumnya. Pada Record Reader, gunakan JsonTreeReader. Jika JsonTreeReader belum ada maka tambahkan dengan create new service, lalu pilih JsonTreeReader, lalu enable dengan mengeklik panah pada sebelah kanan, lalu klik icon petir pada sebelah kanan untuk enable.

Step 9, run semua processor, lalu cek pada Solr dengan memilih menu Query, lalu klik Execute Query.

Access Data from Solr to R

akses data dari Solr menggunakan R dapat menggunakan script seperti di bawah ini. Data yang ingin diambil dapat di-custom menggunakan query pada parameternya. Selanjutnya, data dapat diolah sesuai kebutuhan seperti misalnya untuk analisis atau yang lainnya.

Sekian tutorial tentang nifi dan solr-nya. Terima kasih~

Source:

[1] Authors, “Apache Nifi.” [Online]. Available: https://nifi.apache.org/.

[2] Authors, “Apache Solr.” [Online]. Available: https://lucene.apache.org/solr/.

--

--