📖 Scenario: You work at a company that stores customer information in HBase, a big data database. You need to practice how to create, read, update, and delete data in HBase tables.
🎯 Goal: Build a simple HBase workflow to create a table, add data, read data, update data, and delete data using HBase shell commands.
📋 What You'll Learn
Use HBase shell commands to create a table
Insert data into the table
Read data from the table
Update existing data in the table
Delete data from the table
💡 Why This Matters
🌍 Real World
HBase is used in big data systems to store large amounts of data in a fast, scalable way. Knowing CRUD operations helps manage this data efficiently.
💼 Career
Many data engineer and big data analyst roles require working with HBase or similar NoSQL databases to store and retrieve data.
Progress0 / 4 steps
1
Create HBase table
In HBase shell, create a table called customers with one column family named info. Use the command create 'customers', 'info'.
Hadoop
Hint
Use the create command with the table name and column family in single quotes.
2
Insert data into the table
Insert a row with row key row1 into the customers table. Add a column info:name with value John Doe using the command put 'customers', 'row1', 'info:name', 'John Doe'.
Hadoop
Hint
Use the put command with table name, row key, column, and value.
3
Read data from the table
Read the data for row key row1 from the customers table using the command get 'customers', 'row1'.
Hadoop
Hint
Use the get command with table name and row key to read data.
4
Update and delete data
Update the info:name column for row row1 to Jane Smith using put 'customers', 'row1', 'info:name', 'Jane Smith'. Then delete the row row1 using deleteall 'customers', 'row1'.
Hadoop
Hint
Use put to update and deleteall to delete the entire row.
Practice
(1/5)
1. Which HBase operation is used to retrieve data from a table?
easy
A. Get
B. Put
C. Delete
D. Scan
Solution
Step 1: Understand HBase CRUD operations
HBase uses Get to read data, Put to create or update, Delete to remove, and Scan to read multiple rows.
Step 2: Identify the read operation
Get is the specific operation to retrieve data for a single row.
Final Answer:
Get -> Option A
Quick Check:
Read = Get [OK]
Hint: Remember: Get = Read, Put = Create/Update [OK]
Common Mistakes:
Confusing Put with Get
Using Delete to read data
Thinking Scan is for single row read
2. Which of the following is the correct syntax to insert data into HBase using Java API?
easy
A. Delete delete = new Delete(Bytes.toBytes("row1")); table.put(delete);
B. Get get = new Get(Bytes.toBytes("row1")); table.put(get);
C. Put put = new Put(Bytes.toBytes("row1")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual"), Bytes.toBytes("value")); table.put(put);
D. Put put = new Put("row1"); put.add("cf", "qual", "value"); table.get(put);
Solution
Step 1: Review correct Put syntax in HBase Java API
Put requires a row key as bytes, then addColumn with column family, qualifier, and value as bytes, then call table.put(put).
Step 2: Check each option
Put put = new Put(Bytes.toBytes("row1")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual"), Bytes.toBytes("value")); table.put(put); matches correct syntax. Get get = new Get(Bytes.toBytes("row1")); table.put(get); wrongly uses Get with put. Delete delete = new Delete(Bytes.toBytes("row1")); table.put(delete); uses Delete with put. Put put = new Put("row1"); put.add("cf", "qual", "value"); table.get(put); uses wrong constructors and methods.
Final Answer:
Put put = new Put(Bytes.toBytes("row1")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual"), Bytes.toBytes("value")); table.put(put); -> Option C
Quick Check:
Put syntax correct = Put put = new Put(Bytes.toBytes("row1")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual"), Bytes.toBytes("value")); table.put(put); [OK]
Hint: Put needs Bytes.toBytes for all keys and values [OK]
Common Mistakes:
Using Get or Delete with put()
Not converting strings to bytes
Wrong method names like add() instead of addColumn()
3. What will be the output of the following HBase Java code snippet?
Put put = new Put(Bytes.toBytes("row1"));
put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("Alice"));
table.put(put);
Get get = new Get(Bytes.toBytes("row1"));
Result result = table.get(get);
byte[] value = result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("name"));
System.out.println(Bytes.toString(value));
medium
A. Compilation Error
B. null
C. cf:name
D. Alice
Solution
Step 1: Insert data with Put operation
The code puts value "Alice" in column family "cf" and qualifier "name" for row "row1".
Step 2: Retrieve data with Get operation
The Get fetches the row "row1" and extracts the value for "cf:name" which is "Alice".
Final Answer:
Alice -> Option D
Quick Check:
Put then Get returns inserted value [OK]
Hint: Put then Get returns inserted value exactly [OK]
Common Mistakes:
Expecting null if not flushed
Confusing column family and qualifier
Forgetting to convert bytes to string
4. Identify the error in the following HBase delete operation code snippet:
Delete delete = new Delete("row1");
delete.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual"));
table.delete(delete);
medium
A. Delete constructor argument should be bytes, not string
B. addColumn method is deprecated, should use addColumns
C. table.delete() method does not exist
D. No error, code is correct
Solution
Step 1: Check Delete constructor parameter type
The Delete constructor requires a byte array for the row key, not a plain string.
Step 2: Verify method usage
addColumn is valid for deleting a specific column. table.delete() is correct method.
Final Answer:
Delete constructor argument should be bytes, not string -> Option A
Quick Check:
Delete row key must be bytes [OK]
Hint: Always convert row keys to bytes in HBase operations [OK]
Common Mistakes:
Passing string directly instead of bytes
Confusing addColumn with addColumns
Thinking table.delete() is invalid
5. You want to update the value of a column "status" in column family "info" for row "user123" in HBase. Which sequence of operations is correct to ensure the update is saved and can be read back immediately?
hard
A. Create a Delete for the old value, call table.delete(delete), then create a Put with new value and call table.put(put)
B. Create a Put with new value, call table.put(put), then call table.get(get) to read updated value
C. Call table.get(get) first, then create a Put with new value and call table.put(put)
D. Create a Put with new value, call table.get(get), then call table.put(put)
Solution
Step 1: Use Put to update the column value
In HBase, Put operation overwrites existing values for the same column, so create a Put with the new "status" value for "user123".
Step 2: Save and verify update
Call table.put(put) to save the update, then use table.get(get) to read back the updated value immediately.
Final Answer:
Create a Put with new value, call table.put(put), then call table.get(get) to read updated value -> Option B
Quick Check:
Put updates value, Get reads updated value [OK]
Hint: Put overwrites; Get reads latest value after put [OK]
Common Mistakes:
Deleting before putting is unnecessary
Getting before putting returns old value
Calling get before put misses update
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.