【每日一记】第5天 Hive的基本操作
  

牵网线的 5484人觉得有帮助

{{ttag.title}}
本帖最后由 牵网线的 于 2022-8-7 11:58 编辑

Hive 的基本操作,学习一下,发现基本上和大多关系型sql语法一致

1. 创建数据库
  1. hive > create database tabletest;
复制代码
建立一个新数据库,就会在HDFS的/user/hive/warehouse/中生成一个tabletest.db文件夹。
如果不创建新数据库,不使用hive>use <数据库名>,系统默认的数据库。
可以显式使用hive> use default;默认/user/hive/warehouse/中建表

2. 创建表
语法:
  1. CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
  2. [(col_name data_type [COMMENT col_comment], ...)]
  3. [COMMENT table_comment]
  4. [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  5. [CLUSTERED BY (col_name, col_name, ...)
  6. [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  7. [ROW FORMAT row_format]
  8. [STORED AS file_format]
  9. [LOCATION hdfs_path]
复制代码
示例:
  1. create table t_order(id int,name string,rongliang string,price double)
  2. row format delimited fields terminated by '\t';
复制代码
创建了一个t_order表,对应在Mysql的元数据中TBLS表会增加表的信息,和列的信息,同时,会在HDFS的中的tabletest.db文件夹中增加一个t_order文件夹。所有的 Table 数据(不包括 External Table)都保存在这个目录中。

3. insert语句
Hive一条一条的insert太慢。
但是可以批量的insert.实际就是想文件夹中追加文件。


4. 保存select查询结果的几种方式
  • 将查询结果保存到一张新的hive表中

  1. create table t_tmp
  2. as
  3. select * from t_p;
复制代码

  • 将查询结果保存到一张已经存在的hive表中

  1. insert into table t_tmp
  2. select * from t_p;
复制代码

  • 将查询结果保存到指定的文件目录(可以是本地,也可以是HDFS)

  1. insert overwrite local directory '/home/hadoop/test'
  2. select * from t_p;
复制代码

插入HDFS
  1. insert overwrite directory '/aaa/test'
  2. select * from t_p;
复制代码

5. 查看、删除
语法:
  1. SELECT [ALL | DISTINCT] select_expr, select_expr, ...
  2. FROM table_reference
  3. [WHERE where_condition]
  4. [GROUP BY col_list [HAVING condition]]
  5. [CLUSTER BY col_list
  6. | [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list]
  7. ]
  8. [LIMIT number]
复制代码

注:
  • CLUSTER BY字段含义:根据这个字段进行分区,需要注意设置reduce_num数量。
  • order by 会对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
  • sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1,则sort by只保证每个reducer的输出有序,不保证全局有序。
  • distribute by(字段)根据指定的字段将数据分到不同的reducer,且分发算法是hash散列。
  • Cluster by(字段) 除了具有Distribute by的功能外,还会对该字段进行排序。


因此,如果分桶和sort字段是同一个时,此时,cluster by = distribute by + sort by
  1. select * from inner_table
  2. select count(*) from inner_table
复制代码

删除表时,元数据与数据都会被删除
  1. drop table inner_table
复制代码




打赏鼓励作者,期待更多好文!

打赏
4人已打赏

一个无趣的人 发表于 2022-8-11 11:24
  
楼主分析的很详细,不错的实战经验,小白用户一看就懂,非常好的技术干货帖,顶一个!
平凡的小网工 发表于 2022-8-12 13:15
  
楼主分析的很详细,不错的实战经验,小白用户一看就懂,非常好的技术干货帖,顶一个!
嘀嘀柠柠 发表于 2022-9-6 11:08
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
好懒 发表于 2023-3-21 10:55
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
天青色 发表于 2023-4-18 14:17
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
发表新帖
热门标签
全部标签>
每日一问
2024年技术争霸赛
安装部署配置
技术盲盒
技术笔记
干货满满
产品连连看
信服课堂视频
2023技术争霸赛专题
新版本体验
功能体验
秒懂零信任
技术晨报
GIF动图学习
每周精选
功能咨询
运维工具
自助服务平台操作指引
问题分析处理
纪元平台
标准化排查
华北区交付直播
技术咨询
畅聊IT
答题自测
用户认证
原创分享
VPN 对接
地址转换
深信服技术支持平台
社区帮助指南
通用技术
北京区每日一练
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
流量管理
每日一记
云计算知识
解决方案
sangfor周刊
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
终端接入
授权
设备维护
资源访问
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人