[warning] 外部表:如果数据本身就是存储在HDFS上,我们是否可以使用Hive来管理呢?我们使用Hive的外部表就可以轻松实现这个需求,但是外部表管理数据必须在创建表的同时就指定外部数据的位置。理论上只要数据表格式和数据格式都是标准化,且一一对应,不管数据存储在HDFS的什么位置,都可以使用Hive进行管理。
[success] 实验环境:完全分布式--bigdata1
[info] (1)创建一个电商日志文件
# 进入 /data/software目录
cd /data/software
# 创建电商日志文件 innerTable.log
vi innerTable.log
# 写入以下内容
1 TK-20200606098063 忠信友联安防 -35.00 现结 财务审核 2020-06-06 09:40:36
2 TK-20200605191989 诚达电脑 -241.00 月结 财务审核 2020-06-05 19:00:57
3 TK-20200605158473 智凡科技 -180.00 现结 财务审核 2020-06-05 15:41:22
4 TK-20200605101022 李生 -257.00 现结 财务审核 2020-06-05 10:32:26
5 TK-20200604185303 朱武达 -1140.00 现结 审核通过 2020-06-04 18:38:17
6 TK-20200604172688 创智电脑 -627.00 月结 审核通过 2020-06-04 17:50:35
7 TK-20200604152246 先安安防 -572.00 现结 审核通过 2020-06-04 15:22:56
8 TK-20200604141635 和平朗盛 -2480.00 月结 审核通过 2020-06-04 14:59:11
9 TK-20200604102417 长青藤 -365.00 月结 审核通过 2020-06-04 10:20:01
10 TK-20200604092869 河源客户 -310 现结 审核通过 2020-06-04 09:28:38
11 TK-20200603182813 灯塔易展电脑 0.00 现结 审核通过 2020-06-03 18:51:40
12 TK-20200603162972 民族中学 -3625 月结 审核通过 2020-06-03 16:39:17
13 TK-20200603148551 兴旺 -716.00 现结 审核通过 2020-06-03 14:07:09
14 TK-20200603104403 同行曾林涛 -195.00 月结 审核通过 2020-06-03 10:36:23
15 TK-20200603105333 同行曾林涛 -130 月结 审核通过 2020-06-03 10:35:30
:-:
(2)把日志文件innerTable.log推送到HDFS
# 创建HDFS的上传目录innerTableHdfs
hadoop fs -mkdir /innerTableHdfs
# 把innerTable.log推送上去HDFS的innerTableHdfs
hadoop fs -put /data/software/innerTable.log /innerTableHdfs
[info] (3)创建外部表并加载数据
# 登录hive
hive
# 创建外部表并加载数据
create external table innerTable_log (
num string,
code string,
name string,
fee string,
type string,
status string,
time string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/innerTableHdfs';
# 查询结果
select * from innerTable_log;
[info] 查看外部表详细信息
desc formatted innerTable_log;
内容来源于网络,如有侵权,请联系作者删除!