Hive 基础-进阶
HIVE基础
1,安装:基于hadoop之上,先安装hadoop,安装在另外一篇博客有详细讲到。
2,hive的管理:cli方式,web界面方式
cli方式:直接输入#hive --service cli 或者直接输入hive
web界面方式:
- 默认端口号:9999
- 启动方式:#hive --service hwi &
- 通过浏览器访问:http://<ip地址>:9999/hwi/
提示:如果出现不能发现web程序的war包,是由于当前版本中无hwi的war包,请从hive版本的源代码编译。
3,hive的远程服务(这是用jdbc或者odbc链接数据仓库hive必须的前提)
-端口号 10000
-启动方式:#hive --service hiveserver &
4,hive基本数据类型:
-整数类型:tinyint、smallint、int、bigint
-浮点数类型:float、double
-布尔类型:boolean
-字符串类型:srting
5,hive复杂数据类型:
-数组:array 由一系列相同的数据类型的元素组成
-集合:map 包含key->value 键值对,通过key来访问元素。
-结构:struct 包含不同数据类型的元素,这些元素通过“点语法”的方式来得到所需要的元素。
6,hive时间类型:
-data:描述特定的日期
-timestamp:是一个数据,时间戳
7,hive的表的类型
内部表(table):与数据库中的table在概念上类似。
外部表(exrernal table):指向已经在HDFS中存在的数据,可以创建partition。
分区表(partition):在hive中,表中的一个partition对应于表下的一个目录,所有的partition的数据都存储在对应的目录中。
例:创建基于性别的以逗号分隔的分区表:
create table partition_table(id int, name string ) partitioned by (gender string) row format delimited fields terminated by ',';
桶表(bucket table):桶表是对数据进行哈希取值,然后放在不同的文件中存储。
例:create table bucket_table (id int ,name string,...)
视图:视图是虚表,是一个逻辑概念。
HIVE进阶
1,hive数据导入:
语法:
load data [local] inpath 'filepath' [overwrite] into table tablename [partition(partcoll = vall, partcol2=val2...)]
[local]:表示从操作系统的硬盘目录上进行数据导入,如果不写,表上从hdfs的一个目录进行导入。
[overwrite]:表示十分要覆盖表中已经存在的数据。
[partition...:如果是分区表,用此来指明导入到哪个分区。后面是分区条件。
注意:如果想要把某个目录下的所有文件都导入到表中,在填入‘filepath’文件路径时只需要写文件路径,不需要指明哪一个文件。
2,hive的数据查询:
查询语法:
select [all/distinct] select_expr,select_expr,...] from tablename b where xx group by xx clister by xx
tablename b:此操作是在查询的同时为了简化输入,给表tablename取别名为b
查询中使用计算:
在查询语句时候可以添加查询字段自身或者字段之间的相互计算,直接得出结果。
查询中不计算空值:用 is not null 语句来实现。
fetch task功能:此功能开启后,执行简单的(不计算,不排序等)的查询语句,就不会mp的作业,可以提高查询效率。
3,hive函数:
数学函数:round 四舍五入取整 ceil 向上取整 floor 向下取整
字符函数:lower 转换小写 upper 转换大写 length 显示字符长度 concat 拼加一个字符串 substr 求字符串的子串
trim 去掉一个字符串前后的空格 lpad 左填充 rpad 右填充
收集函数:size 返回map集合中的个数
select size(map(<key,value>,<key,value>,....)); 返回结果为2
转换函数:cast 把不同数据转换成其他数据类型
select cast (1 as bigint); 把1转换成bigint类型
日期函数:to_data:取出一个字符串中间日期的部分
year month day :分别取出一个日期中的年月日
weekofyear:返回一个日期在一年中是第几个星期
datediff:两个日期相减,返回他们之间的天数。
date_add:在一个日期值上加上多少天
data_sub:在一个日期值上减去多少天
条件函数:coalesce:从左到右找到第一个不为空的值
case a when b then c else f end:如果a满足b条件时返回c,否则返回f,以end为结束语。
聚合函数:count sum min max avg
4,hive的表连接:
等值连接:以=号为条件
不等值连接:以<,>,<>号为条件查询的连接
外连接:通过外连接可以将对于连接条件不成立的记录任然包含在最后的输出结果中。
左外连接:显示连接条件左边表中不成立的记录==select a.x from a left outer join b on a.id=b.id
右外连接:显示连接条件右边表中不成立的记录==select b.x from b right outer join b on a.id=b.id
自连接:通过表的别名将同一张表视为多张表。
select e.ename,b.bname from emp e, emp b where e.mgr=b.empid; 给一张emp表同时取两个别名,这样就认为是两张表,就可以用别名来设置查询条件。
5,子查询:查询条件where里面嵌套另外一个查询语句
6,hive自定义函数:
创建临时函数:hive>create temporary function<函数名> as 'java 类名’;
删除临时函数:hive>drop temporary function <函数名>;
暂时这么多。。。。
转载于:https://www.cnblogs.com/j-lv110/p/8167375.html
Hive 基础-进阶相关推荐
- Hadoop基础教程-第12章 Hive:进阶(12.3 HiveServer2)(草稿)
第12章 Hive:进阶 12.3 HiveServer2 12.3.1 HiveServer1 HiveServer是一种可选服务,允许远程客户端可以使用各种编程语言向Hive提交请求并检索结果.H ...
- boost log 能不能循环覆盖_前端基础进阶(十四):深入核心,详解事件循环机制...
Event Loop JavaScript的学习零散而庞杂,很多时候我们学到了一些东西,但是却没办法感受到进步!甚至过了不久,就把学到的东西给忘了.为了解决自己的这个困扰,在学习的过程中,我一直在试图 ...
- python开发需要掌握哪些知识-Python基础进阶需要掌握哪些知识点?
Python基础进阶需要掌握哪些知识点?Python将是每个程序员的标配,有编程基础再掌握Python语言对于日后的升职加薪更有利.Python语言简洁利于理解,语法上相对容易能够让开发者更专注于业务 ...
- jquery function_前端基础进阶(十三)详细图解jQuery扩展jQuery插件
UI 鉴赏 早几年学习前端,大家都非常热衷于研究jQuery源码. 我至今还记得当初从jQuery源码中学到一星半点应用技巧的时候常会有一种发自内心的惊叹,"原来JavaScript居然可以 ...
- 前端基础进阶(七):函数与函数式编程
纵观JavaScript中所有必须需要掌握的重点知识中,函数是我们在初学的时候最容易忽视的一个知识点.在学习的过程中,可能会有很多人.很多文章告诉你面向对象很重要,原型很重要,可是却很少有人告诉你,面 ...
- 前端基础进阶(十):面向对象实战之封装拖拽对象
https://segmentfault.com/a/1190000012646488 https://yangbo5207.github.io/wutongluo/ 说明:此处只是记录阅读前端基础 ...
- python flask快速入门与进阶-Flask基础进阶与python flask实战bbs教程
├─Flask基础进阶 │ 01-HTTP 基础知识.mp4 │ 02-python CGI 与 WebServer.mp4 │ 03-virtuanenv配置及Flask快速示例.mp4 │ 04- ...
- HiveQL学习笔记(二):Hive基础语法与常用函数
本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...
- Hive 基础及安装
为什么选择 Hive? 基于Hadoop的大数据的计算/扩展能力 支持SQL like查询语言 统一的元数据管理 简单编程 Hive 是一种客户端工具,无所谓伪分布式/分布式: 对于开发人员,直接使用 ...
最新文章
- idea设置新增文件,自动添加到git
- PaaS云计算平台服务商大集合
- 动画图解 socket 缓冲区的那些事儿
- javascript 计算两个坐标的距离 米_土方全面应用计算
- java 对象池 实现_Java对象池技术的原理及其实现
- 2020武大计算机学院研究生补录通知,2020年武汉大学硕士研究生复试录取工作细则汇总...
- openerp one2many 字段排序
- hibernate映射配置文件说明
- 区块链架构与应用(区块链入门篇)
- Spring中事务管理的几种配法
- Putty 保存账号密码
- 验票系统认证服务器地址,北京增值税发票勾选认证(选择确认)平台入口
- 电源压敏电阻的计算选择
- 在matlab中syms是什么,syms在matlab中的作用是什么?
- NetApp Storage MetroCluster 双活解析
- 微信企业号的五个典型案例分享
- [OTA-day3SPI]W25Q64擦写
- libusb函数说明
- 如何使用 OpenTracing 和 Jaeger 追踪 Pulsar 消息
- Taste and Aesthetics - A Conversation with Ken Arnold, Part II 阅读笔记
热门文章
- python类相关的研究生专业-为什么很多大学生甚至研究生抛弃专业去做码农呢?...
- python怎么导入包-python模块之导入包及模块发布
- 用python画图代码简单-【Matplotlib】利用Python进行绘图
- 软件工程python就业方向-月薪2万+的Python Web岗,学到什么程度能找到工作?
- python快速入门 pdf-Python快速入门PDF高清完整版本下载
- python画笑脸-如何用Python画滑稽笑脸
- python中的装饰器有哪些-python中的装饰器
- 电脑上如何下载python-如何下载python并正确安装
- python安装pandas模块-python安装numpy和pandas的方法步骤
- python类中方法的执行顺序-Python实例化class的执行顺序实例方法