Column families group related data together in HBase. They help organize and store data efficiently.
HBase data model (column families) in Hadoop
create 'table_name', 'column_family1', 'column_family2'
Column families are defined when creating a table and group columns logically.
Each column family can contain many columns, but all columns in a family share storage settings.
create 'users', 'info', 'stats'
create 'products', 'details', 'inventory'
This example creates an HBase table named employees with two column families: personal and work. It adds data for one employee and then scans the table to show the stored data.
create 'employees', 'personal', 'work' put 'employees', 'emp1', 'personal:name', 'Alice' put 'employees', 'emp1', 'personal:email', 'alice@example.com' put 'employees', 'emp1', 'work:department', 'Sales' scan 'employees'
All columns in a column family are stored together on disk, which improves read/write speed for those columns.
Too many column families can slow down performance; keep them few and meaningful.
Column families cannot be added or removed easily after table creation, so plan carefully.
Column families group related columns in HBase tables.
They help organize data and control storage settings.
Use them to improve performance and reflect real-world data categories.
Practice
column families in HBase?Solution
Step 1: Understand the role of column families
Column families group related columns in HBase tables to organize data logically.Step 2: Identify the main purpose
This grouping helps manage storage and access efficiently by keeping related data together.Final Answer:
To group related columns together for better organization -> Option DQuick Check:
Column families = Group related columns [OK]
- Confusing column families with rows
- Thinking column families create indexes
- Assuming column families encrypt data
Solution
Step 1: Recall HBase shell syntax for creating tables
In HBase shell, tables are created with column families using: create 'table_name', 'column_family'Step 2: Match the correct syntax
create 'mytable', 'cf1' matches this syntax exactly, defining 'cf1' as a column family.Final Answer:
create 'mytable', 'cf1' -> Option AQuick Check:
HBase create table syntax = create 'table', 'cf' [OK]
- Using SQL syntax instead of HBase shell
- Trying to add columns like in relational DBs
- Confusing insert with create commands
cf1 and cf2, what happens if you insert data only into cf1:colA for a row?Solution
Step 1: Understand column family independence
In HBase, column families are independent; data can be stored in any family without affecting others.Step 2: Analyze the effect of inserting data into one family
Inserting data intocf1:colAstores data only there;cf2columns remain empty for that row.Final Answer:
Onlycf1:colAstores data;cf2columns remain empty for that row -> Option AQuick Check:
Column families store data independently [OK]
- Assuming data copies across column families
- Thinking all families must have data per row
- Believing row is deleted if some families are empty
create 'mytable' 'cf1' 'cf2' but got an error. What is the likely cause?Solution
Step 1: Review HBase create table syntax
The correct syntax is: create 'table_name', 'cf1', 'cf2' with commas between column families.Step 2: Identify the error in the command
The command is missing commas between column families, which is invalid syntax in HBase shell.Final Answer:
The syntax requires column families as separate arguments with commas -> Option BQuick Check:
HBase create syntax = with commas between column families [OK]
- Omitting commas between column families
- Using quotes incorrectly
- Thinking table names can't have numbers
Solution
Step 1: Understand column family design principles
Column families group related columns to improve performance and reflect real-world categories.Step 2: Apply to customer data scenario
Separating 'address' and 'orders' into different column families groups related data logically and optimizes storage.Final Answer:
Create separate column families like 'address' and 'orders' to group related columns -> Option CQuick Check:
Use column families to group related data categories [OK]
- Putting all data in one family causing inefficiency
- Creating a family per customer wastes resources
- Mixing rows and columns incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
