Hive创建外部表导入不同格式的数据至数据仓库
一、数据仓库的层级结构
原始数据层:ODS(Operational Data Store)
数据明细层:DWD(Data Warehouse Detail)
数据汇总层:DWS(Data Warehouse Summary)
数据集市层:DWM (Data Warehouse Market)
二、外部表的定义(创建外部表)
在Hive中,外部表是一种用于逻辑映射外部数据源的表,无需将数据复制到Hive仓库中。外部表提供了对原始数据的逻辑视图,允许在数据仓库中引用原始数据,而不必在本地存储数据。
创建外部表的过程主要发生在数据仓库的原始数据层(ODS)和数据明细层(DWD)。这两个层级负责采集、存储、清洗、集成和加工原始数据,因此在这两个阶段通常会创建外部表来管理数据。
以下是创建外部表的基本语法:
-- external table
CREATE EXTERNAL TABLE IF NOT EXISTS table_name (
-- 列定义
column1 data_type,
column2 data_type,
...
)
-- 指定了使用的序列化/反序列化器 (SerDe), OpenCSVSerde
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
-- 指定 SerDe 的属性
WITH SERDEPROPERTIES (
'separatorChar' = ',', -- OpenCSVSerde默认项下同
'quoteChar' = '"',
'escapeChar' = '\\'
)
-- 指定了输入数据的格式
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
-- 指定了输出数据的格式
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
-- 可选:表的存储位置
LOCATION '/your/hdfs/path/table_name'
-- 可选:指定分区列(如果表是分区表)
PARTITIONED BY (partition_column1 data_type, partition_column2 data_type, ...)
-- 可选