Mengatasi NullPointerException Retrieve Data HBase

Apa itu HBase?

HBase merupakan opensource distributed non relational database dengan pemodelan mirip seperti BigTable milik Google. HBase ini dikembangkan oleh Apache Software Foundation dan merupakan bagian dari Apache Hadoop project. Database ini running diatas HDFS. Database opensource Apache Software Foundation ini dikembangkan menggunakan Java language. HBase dikembangkan untuk membuat “BigTable”  versi Apache Hadoop. Database ini cocok digunakan untuk bermain storing data dalam jumlah besar.

Langsung aja ke inti permasalahan. Sebenernya mau sekalian ngebahas tentang schema model HBase. Tapi yasudahlah, mungkin lain kali. Hahaha.. Kebetulan kemaren membuat API untuk retrieve data. Dan menggunakan filter dari library nya HBase, SingleColumnValueFilter. Seharusnya ketika data yang diambil merupakan data data yang sudah terfilter, tetapi pada kasus kali ini data tidak terfilter sehingga menampilkan semua data dan menampilkan error NullPointerException.

Caused by: java.lang.NullPointerException: null
    at scala.collection.immutable.List.$colon$colon$colon(List.scala:120) ~[scala-library.jar:0.12.2]
    at code.model.Product$.theAdminPath(Product.scala:65) ~[classes/:na]
    at code.Product$.<init>(Product.scala:53) ~[classes/:na]
    at code.Product$.<clinit>(Product.scala) ~[classes/:na]
    ... 49 common frames omitted

Error NullPointerException

Mengapa bisa muncul error NullPointerException? Setelah ditelusuri bahwa bytes data memiliki value null ketika akan diconvert ke datatype scala yang readable. Jadi ibarat tidak ada bytes value yang akan diconvert. Mengapa bisa tidak ada bytes value yang dialokasikan untuk column tersebut? Karena bisa jadi kesalahan terletak pada saat storing data ke HBase. Seharusnya ketika suatu key tidak memiliki value, tidak perlu distore ke dalam hbase. Hal ini berpengaruh ketika menggunakan filter. Ketika pointer mengecek pada row tersebut value dianggap null maka langsung throw ke exception – NullPointerException

Solusi NullPointerException

Solusi yang digunakan adalah

  1. Define variable default seperti array kosong, collection kosong, atau string kosong.
  2. Ketika bytes data akan diconvert ke datatype scala dilakukan pengecekan apakah bytes value tersebut null atau tidak.
  3. Jika bytes value tersebut null maka otomatis akan menggunakan variable default.
var data = ""
var bytesData = n.getValue(bytesStream, Bytes.toBytes("id"))
if(bytesData != null) {
new String(bytesData)
}

Nah, cukup sekian sharing dari masbob. Hahaha.. Semoga bermanfaat bagi yang membacanya. If you want to know the result, just try it (Masbob)

Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Ahmad Faiz Nasshor
Ahmad Faiz Nasshor
9 years ago

gila pinter bangeeeet

boby rahmawan
9 years ago

wkwkwkw… opo lho lee…