HBase
 sql >> Teknologi Basis Data >  >> NoSQL >> HBase

How-to:Gunakan Antarmuka Apache HBase REST, Bagian 3

How-to ini adalah yang ketiga dalam seri yang mengeksplorasi penggunaan antarmuka Apache HBase REST. Bagian 1 mencakup dasar-dasar HBase REST, beberapa peringatan Python, dan administrasi tabel. Bagian 2 menunjukkan cara menyisipkan beberapa baris secara bersamaan menggunakan XML dan JSON. Bagian 3 di bawah ini akan menunjukkan cara mendapatkan banyak baris menggunakan XML dan JSON.

Mendapatkan Baris dengan XML

Menggunakan GET kata kerja, Anda dapat mengambil satu baris atau sekelompok baris berdasarkan kunci baris mereka. (Anda dapat membaca lebih lanjut tentang format URL nilai ganda di sini.) Di sini kita akan menggunakan karakter wildcard sederhana atau tanda bintang (*) untuk mendapatkan semua baris yang dimulai dengan string tertentu. Dalam contoh ini, kita dapat memuat setiap baris komedi Shakespeare dengan "shakespeare-comedies-*". Ini juga mengharuskan kunci baris kita ditata oleh “AUTHOR-WORK-LINENUMBER”.

Berikut adalah kode untuk mendapatkan dan bekerja dengan keluaran XML:

request = requests.get(baseurl + "/" + tablename + "/shakespeare-comedies-*", headers={"Accept" : "text/xml"})

root = fromstring(request.text)

# Go through every row passed back
for row in root:
     message = ''
     linenumber = 0
     username = ''
    
     # Go through every cell in the row
     for cell in row:
          columnname = base64.b64decode(cell.get('column'))

          if cell.text == None:
               continue
    
          if columnname == cfname + ":" + messagecolumn:
               message = base64.b64decode(cell.text)
          elif columnname == cfname + ":" + linenumbercolumn:
               linenumber = decode(cell.text)
          elif columnname == cfname + ":" + usernamecolumn:
               username = base64.b64decode(cell.text)

     rowKey = base64.b64decode(row.get('key'))

Kami memulai kode dengan get meminta. Ini get akan mengembalikan semua baris dalam komedi Shakespeare. Baris ini akan kembali sebagai XML karena perubahan pada Accept tajuk.

Kemudian kami mengambil XML yang dikembalikan oleh permintaan dan mengubahnya menjadi XML DOM. Setiap baris dari HBase berada dalam elemen baris yang terpisah. Kami akan menggunakan for loop untuk melewati setiap baris.

Setiap sel dalam baris adalah elemen XML yang terpisah. Kami akan menggunakan for lain loop untuk melewati semua sel ini. (Blok kode ini dapat dibuat lebih sederhana dengan menggunakan XPath untuk menemukan elemen yang benar.) Saat setiap kolom ditemukan, nilainya disimpan ke variabel. (Metode decode dibahas di Bagian 1 seri ini.) Semua nilai yang kembali dalam XML dienkode base64 dan perlu didekode sebelum menggunakannya.

Akhirnya, kunci baris diambil dan didekodekan.

Setelah semua data ditemukan dan diterjemahkan, Anda dapat mulai menggunakannya. Kode Anda akan dimulai setelah mendekode baris. Perlu diingat bahwa beberapa variabel ini tidak perlu didekode — saya melakukan semuanya di sini demi kelengkapan.

Mendapatkan Baris dengan JSON

Bekerja dengan JSON sama seperti bekerja dengan XML:Menggunakan get  kata kerja, Anda dapat mengambil satu baris atau sekelompok baris berdasarkan kunci barisnya.

Berikut adalah kode untuk mendapatkan dan bekerja dengan output JSON:

request = requests.get(baseurl + "/" + tablename + "/shakespeare-comedies-*", headers={"Accept" : "application/json"})

bleats = json.loads(request.text)

for row in bleats['Row']:
     message = ''
     lineNumber = 0
     username = ''

     for cell in row['Cell']:
          columnname = base64.b64decode(cell['column'])
          value = cell['$']
         
          if value == None:
               continue

          if columnname == cfname + ":" + messagecolumn:
               message = base64.b64decode(value)
          elif columnname == cfname + ":" + linenumbercolumn:
               lineNumber = decode(str(value))
          elif columnname == cfname + ":" + usernamecolumn:
               username = base64.b64decode(value)

     rowKey = base64.b64decode(row['key'])

Kami memulai kode dengan get permintaan yang akan mengembalikan semua baris dalam komedi Shakespeare. Baris ini akan kembali sebagai JSON karena perubahan pada Accept tajuk.

Kemudian kami mengambil JSON yang dikembalikan oleh permintaan dan mengubahnya menjadi objek JSON. Setiap baris dari HBase berada dalam indeks terpisah dalam larik baris. Kami akan menggunakan for loop untuk melewati setiap baris.

Setiap sel dalam baris adalah indeks array yang terpisah. Kami akan menggunakan for lain loop untuk melewati semua sel ini. Saat setiap kolom ditemukan, nilainya disimpan ke variabel. Semua nilai yang kembali di JSON dienkode base64 dan perlu didekodekan sebelum menggunakannya. (Sekali lagi, metode dekode dibahas di Bagian 1 seri ini.) Perhatikan bahwa nilai kembali dalam entri tanda dolar ($).

Akhirnya, kunci baris diambil dan didekodekan.

Setelah semua data ditemukan dan diterjemahkan, Anda dapat mulai menggunakannya.

Menggunakan ikal

Seperti yang ditunjukkan dalam dokumentasi antarmuka REST, Anda dapat menggunakan curl untuk menampilkan XML atau JSON langsung ke konsol. Misalnya, Anda dapat melakukan get yang sama seperti yang baru saja kita lakukan menggunakan curl. Perintahnya adalah:

curl -H "Accept: text/xml" http://localhost:8070/tablename/shakespeare-comedies-*

Perintah itu akan memberi Anda output XML. Untuk mendapatkan output JSON, perintahnya adalah:

curl -H "Accept: application/json" http://localhost:8070/tablename/shakespeare-comedies-*

Dengan perintah seperti ini, Anda dapat dengan cepat melihat apa yang datang kembali atau seperti apa datanya. Anda dapat menggunakan curl untuk melihat kode status panggilan REST dengan:

[user@localhost HBaseREST]$ curl -I -H "Accept: text/xml" http://localhost:8070/messagestable/shakespeare-comedies-*
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/xml

Kesimpulan

Antarmuka HBase REST adalah cara yang baik untuk menggunakan HBase jika Anda tidak ingin menggunakan Java. Ini menawarkan antarmuka REST yang familier yang dibangun dalam banyak bahasa serta format data yang familier.

Mudah-mudahan, contoh kode dan penjelasan dalam seri ini akan menghemat banyak Google saat memulai proyek RESTful HBase Anda.

Jesse Anderson adalah seorang instruktur di Universitas Cloudera.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa yang Harus dan Tidak Boleh Dilakukan Apache HBase

  2. Apache Hadoop Ozone Security – Otentikasi

  3. Ikhtisar Replikasi Apache HBase

  4. Keamanan Basis Data Operasional – Bagian 1

  5. Replikasi Apache HBase:Tinjauan Operasional