📖 Scenario: You are working with Hadoop and Hive to manage data tables. You want to understand the difference between external and managed tables by creating examples of each type.
🎯 Goal: Create one managed table and one external table in Hive. Then, query both tables to see their contents.
📋 What You'll Learn
Create a managed table called managed_employees with columns id (int) and name (string).
Create an external table called external_employees with the same columns, pointing to a specific HDFS location /user/hive/external_employees.
Insert sample data into the managed table.
Query both tables to display their data.
💡 Why This Matters
🌍 Real World
Data engineers use managed and external tables to organize and control data storage in Hadoop environments.
💼 Career
Understanding table types is essential for managing data lifecycle and storage in big data jobs.
Progress0 / 4 steps
1
Create a managed table
Write a Hive query to create a managed table called managed_employees with columns id (int) and name (string).
Hadoop
Hint
A managed table is created with CREATE TABLE without EXTERNAL.
2
Create an external table
Write a Hive query to create an external table called external_employees with columns id (int) and name (string), stored at HDFS location /user/hive/external_employees.
Hadoop
Hint
Use CREATE EXTERNAL TABLE and specify the LOCATION for external tables.
3
Insert data into the managed table
Write a Hive query to insert two rows into the managed_employees table: (1, 'Alice') and (2, 'Bob').
Hadoop
Hint
Use INSERT INTO TABLE with VALUES to add rows.
4
Query both tables
Write two Hive queries to select all data from managed_employees and external_employees tables and print the results.
Hadoop
Hint
Use SELECT * FROM table_name to see all rows in a table.
Practice
(1/5)
1. What is the main difference between a managed table and an external table in Hadoop?
easy
A. Managed tables do not store any data, external tables store all data inside Hadoop.
B. External tables store data inside Hadoop, managed tables store data outside Hadoop.
C. Managed tables store and manage data files within Hadoop, while external tables only manage metadata and keep data files outside Hadoop.
D. There is no difference; both manage data files the same way.
Solution
Step 1: Understand managed table behavior
Managed tables store data files inside Hadoop's warehouse directory and Hadoop controls their lifecycle.
Step 2: Understand external table behavior
External tables only manage metadata in Hadoop but keep data files at an external location you specify.
Final Answer:
Managed tables store and manage data files within Hadoop, while external tables only manage metadata and keep data files outside Hadoop. -> Option C
Quick Check:
Managed = data + metadata, External = metadata only [OK]
Hint: Managed = Hadoop controls data; External = you control data location [OK]
Common Mistakes:
Confusing where data files are stored
Thinking external tables delete data on drop
Assuming managed tables don't store data
2. Which of the following is the correct HiveQL syntax to create an external table?
easy
A. CREATE TABLE my_table (id INT, name STRING) LOCATION '/user/data' EXTERNAL;
B. CREATE TABLE my_table EXTERNAL (id INT, name STRING) LOCATION '/user/data';
C. CREATE TABLE my_table (id INT, name STRING) EXTERNAL LOCATION '/user/data';
D. CREATE EXTERNAL TABLE my_table (id INT, name STRING) LOCATION '/user/data';
Solution
Step 1: Recall correct syntax for external table creation
The keyword EXTERNAL comes immediately after CREATE and before TABLE.
Step 2: Check location clause placement
The LOCATION clause specifies the external data path and comes after the column definitions.
Final Answer:
CREATE EXTERNAL TABLE my_table (id INT, name STRING) LOCATION '/user/data'; -> Option D
Quick Check:
EXTERNAL after CREATE, LOCATION after columns [OK]
Hint: EXTERNAL goes right after CREATE in HiveQL [OK]
Common Mistakes:
Placing EXTERNAL after TABLE keyword
Misplacing LOCATION clause
Omitting EXTERNAL keyword for external tables
3. Consider the following Hive commands:
CREATE EXTERNAL TABLE ext_table (id INT) LOCATION '/data/ext';
CREATE TABLE man_table (id INT);
What happens if you drop ext_table and man_table respectively?
medium
A. Dropping ext_table deletes data files; dropping man_table deletes only metadata.
B. Dropping ext_table deletes only metadata; dropping man_table deletes both metadata and data files.
C. Both drops delete only metadata, data files remain.
D. Both drops delete metadata and data files.
Solution
Step 1: Understand drop behavior for external tables
Dropping an external table removes only metadata; data files at '/data/ext' remain untouched.
Step 2: Understand drop behavior for managed tables
Dropping a managed table removes metadata and deletes data files stored in Hadoop's warehouse.
Final Answer:
Dropping ext_table deletes only metadata; dropping man_table deletes both metadata and data files. -> Option B
Quick Check:
External drop = metadata only, Managed drop = metadata + data [OK]
Hint: External drop keeps data; managed drop deletes data [OK]
Common Mistakes:
Assuming external drop deletes data files
Thinking managed drop keeps data files
Confusing metadata and data deletion
4. You created an external table but accidentally omitted the LOCATION clause. What will happen when you try to query this table?
medium
A. Query will fail because LOCATION is mandatory for external tables.
B. Query will succeed using default warehouse location, behaving like a managed table.
C. Query will succeed but return no data.
D. Hive will automatically assign a random external location.
Solution
Step 1: Check requirement of LOCATION for external tables
External tables require LOCATION to specify where data files reside outside Hadoop's warehouse.
Step 2: Understand consequence of missing LOCATION
Without LOCATION, Hive cannot find external data, so query fails with an error.
Final Answer:
Query will fail because LOCATION is mandatory for external tables. -> Option A
Quick Check:
External tables need LOCATION [OK]
Hint: External tables must have LOCATION clause [OK]
Common Mistakes:
Assuming default location is used for external tables
Thinking query returns empty data silently
Believing Hive auto-assigns external location
5. You have important data files stored in HDFS at /user/hadoop/data. You want to create a table in Hive to query this data but ensure that deleting the table does NOT delete the data files. Which table type should you create and what is the correct approach?
hard
A. Create an external table with LOCATION '/user/hadoop/data' so Hive manages metadata only and leaves data intact on drop.
B. Create a managed table and copy data files into Hive warehouse; data will be deleted on drop.
C. Create a managed table with LOCATION '/user/hadoop/data' to keep data files safe on drop.
D. Create an external table without specifying LOCATION; Hive will manage data safely.
Solution
Step 1: Identify requirement to keep data files safe on table drop
Only external tables keep data files untouched when the table is dropped.
Step 2: Use external table with explicit LOCATION
Specify LOCATION '/user/hadoop/data' so Hive knows where data files are stored externally.
Step 3: Understand managed table behavior
Managed tables store data in warehouse and delete data files on drop, so not suitable here.
Final Answer:
Create an external table with LOCATION '/user/hadoop/data' so Hive manages metadata only and leaves data intact on drop. -> Option A
Quick Check:
External + LOCATION = safe data on drop [OK]
Hint: Use external table with LOCATION to protect data files [OK]
Common Mistakes:
Using managed table and losing data on drop
Omitting LOCATION for external table
Assuming managed table can protect external data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.