专栏首页北漂的我Hive 创建外部表 原

Hive 创建外部表 原

1. 将数据上传至 hdfs

hdfs dfs -put stocks /user/bigdata

2. 创建外部表

create external table if not exists stocks_external(
ymd date,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float
)
partitioned by (exchanger string,symbol string)
row format delimited fields terminated by ','
location '/user/bigdata/stocks';

3. 载入数据

alter table stocks_external add partition(exchanger="NASDAQ", symbol="AAPL") 
location '/user/bigdata/stocks/NASDAQ/AAPL';

alter table stocks_external add partition(exchanger="NASDAQ", symbol="INTC") 
location '/user/bigdata/stocks/NASDAQ/INTC';

alter table stocks_external add partition(exchanger="NYSE", symbol="IBM") 
location '/user/bigdata/stocks/NYSE/IBM';

alter table stocks_external add partition(exchanger="NYSE", symbol="GE") 
location '/user/bigdata/stocks/NYSE/GE';

-- 展示分区信息
show partitions stocks_external;

4. 查询表

select * from stocks_external where exchanger = 'NASDAQ' and symbol = 'AAPL' limit 10;

select ymd, price_close from stocks_external where exchanger = 'NASDAQ' and symbol = 'AAPL' limit 10;

select exchanger, symbol, count(*) from stocks_external group by exchanger,symbol;

select exchanger, symbol, max(price_high) from stocks_external group by exchanger, symbol;

5. 删除表

-- 删除外部表
drop table stocks_external;
-- 查看 hdfs 上的数据,删除外部表是只删除表的元数据,不删除表的实际数据,这点和
hdfs dfs -ls /user/bigdata

最后归纳一下Hive中表与外部表的区别:   1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;   2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!   那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【解决】Hive 使用 mysql 作为 metastore 元数据库时UTF-8编码的问题 原

    北漂的我
  • Hive 表存取 json 数据

    北漂的我
  • CentOS 6.9 搭建 Presto 原

    1.下载 presto-server-0.166.tar.gz 和 presto-cli-0.166-executable.jar, 也可以直接到 http:/...

    北漂的我
  • 机器学习实战 | 数据探索(缺失值处理)

    点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接 接着上一篇:《机器学习实战-数据探索》介绍,机器学习更多内容可以关注github项目...

    用户1332428
  • 机器学习应该准备哪些数学预备知识?

    首先,线性代数和微积分都是必要的,但是初学者容易割裂地看待它们以及机器学习,不清楚哪些线性代数&微积分的知识才是掌握机器学习数学推导的关键。一样,我也走过并继续...

    小莹莹
  • 防止SQL注入的6个要点

    ytkah
  • 英特尔加快发展AI芯片业务,预计2022年收入达到100亿美元

    英特尔在过去20年中销售了超过2.2亿台至强处理器,创造了1300亿美元的收入。但最新的10亿美元来自AI应用的销售,这可能是最重要的。

    AiTechYun
  • 运维工具箱

    运维精简工具箱 Bootstrapping:  Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、 Openstack、 Clou...

    小小科
  • Oracle函数sys_connect_by_path用法

    sys_connect_by_path函数是为了配合递归查询的函数,递归查询可以参考我之前的博客:https://blog.csdn.net/u01442739...

    用户1208223
  • 【科技】人工智能的下一个前沿:建立读懂你的情绪的机器

    现有的人工智能,神经网络和机器学习等技术的蓝图是人类的大脑,因为大脑是解决目前我们所知问题的最有效的工具。 ? 然而,这些技术有很大一部分缺失—即人类智慧的情商...

    AiTechYun

扫码关注云+社区

领取腾讯云代金券