Spark for ETL: Best Practices

Thursday, August 02, 2018

Dari salah satu video Spark Summit 2017:

Schema

1. Definisikan schema saat membaca text file (JSON, CSV) agar Spark tidak perlu melakukan scanning untuk infer schema
2. Penggunaan schema menyebabkan aplikasi Spark kita jadi lebih fleksibel: perubahan schema ataupun field dengan panjang yg berubah2 dapat di handle dengan mudah
3. Dapat digunakan untuk type error handling

Metadata
1. Partisi folder data di HDFS menggunakan tanggal ('date=2018-07-10') ketimbang pemisahan tahun, bulan, dan tanggal
2. Teknik di atas penting karena penggunaan wildcard saat membaca file di Spark akan menyebabkan Spark tidak melihat adanya partisi
3. Best practice untuk backfill: bikin daftar direktori data tanggal, iterasi tiap folder dan lakukan backfill. Untuk mempercepat proses, lakukan paralelisasi (df.par.write di scala, threading di python). Penggunaan wildcard juga menyebabkan Spark melakukan shuffling
4. Ukuran standar partisi Parquet: 500 - 1 GB

Performance
1. Translasikan null value di data source ke native null di Spark
2. Empty string! = null value di Spark
3. Error Handling UDF: verifikasi tipe data input ke DF, buat sample untuk input UDF, buat test case,

Error Handling

You Might Also Like

0 comments