Hive
Apache Hive大数据离线数仓
猫君之上
一起学习大数据开发,共同进步
展开
-
Apache Hive数据导入
1. 内部表、外部表的数据导入1)load方式进行数据的导入local :加local代表是从本地(客户端所在本地)导入的,不加的话表示从hdfs导入数据。① 本地数据导入外部表不支持 overwriteload data local inpath '本地路径' [overwrite] into 表名;这种方式的本质相当于将数据文件上传到了hdfs的hive表的目录底下。(只...原创 2019-03-20 14:15:58 · 281 阅读 · 0 评论 -
Apache Hive其他类交互式命令和命令行命令
1.Hive交互式命令所谓的交互式值的是类似MySQL交互式模式,即命令行直接输入hive,直接在里面写hql语句。quit;set xxxx=xxx; -- 设置hive的参数和属性的,只限于当前客户端,当前客户端退出则参数失效,永久生效则写在配置文件中-- 例如: set hive.exec.mode.local.auto=true-- 修改hive的参数3个地方h...原创 2019-03-23 19:24:30 · 199 阅读 · 0 评论 -
Apache Hive 加载JSON数据与JSON解析
首先Hive提供了三种方案(应用于不同的场景):建表JsonSerDe内置函数get_json_object内置函数json_tuple1.使用JsonSerDe创建表加载JSON文件注意此种方式需要满足的条件:json文件必须是形如如下格式:下面 xxx可以是对象,也可以是数组{ key1:xxxx, key2:xx, key3,xxx}另外...原创 2020-07-21 23:45:22 · 473 阅读 · 0 评论 -
Apache Hive 常用的 SerDe
转:http://blog.csdn.net/mike_h/article/details/50161555最近在 Google 上看到一篇在 Hive 中利用正则表达式来自定义反序列化处理文本文件。百度后发现这块知识目前还没有人系统的总结一下。所以我就不才把之前记录的资料跟大家分享一下:SerDe 是Serializer 和 Deserializer 的简称。它是 Hive用来处理记录并且...转载 2019-03-22 19:18:56 · 1624 阅读 · 0 评论 -
Apache Hive 自定义函数UDF函数
1.Hive 函数分类进一条数据出一条数据:(UDF 用户自定义函数) substr() from_unixtime()等进多条数据出一条数据:(UDAF 用户定义聚合函数) sum,count,max,min等进一条数据出多条数据:(UDTF 用户定义表函数) explode2.使用java开发UDF函数实现求某一个字符串中某子串出现的次数1)准备...原创 2019-03-22 19:10:14 · 329 阅读 · 0 评论 -
Apache Hive 多字节分割数据文件导入
由于hive默认使用的SerDe(序列化与反序列化)接口类是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,而这个接口是不支持多字符分割的,所以对需要多分隔符数据文件进行导入时,即便指定多字节分隔符,出来的数据一般都是有问题的。解决方案是使用: org.apache.hadoop.hive.serde2.RegexSeDe接口,即使用正则...原创 2019-03-22 18:37:17 · 441 阅读 · 0 评论 -
Apache Hive 垃圾回收
由于hive对hive表的管理实质上就是管理hdfs目录,因此相对来说垃圾回收相对来说比较简单1.hive 外部表的删除由于外部表不由hive管理,因此,在hive里面删除外部表,删除的仅仅是hive的元数据,原始数据还存在hdfs上,所以对于外部表而言,只需要重建一下表,然后重新装载一下数据即可。2.hive 内部表的删除由于hive内部表的管理者是hive,因此,hive的内部表删...原创 2019-03-22 18:20:18 · 1013 阅读 · 0 评论 -
Apache Hive 远程连接
主要使用beeline工具连接到远程hive服务端,这里的beeline所在节点不必是hadoop集群节点1.上传hive的安装包并解压beeline所在的客户端节点只需要一个hive安装包即可(这里上传到/opt)sudo tar -zxvf apache-hive-2.3.4-bin.tar.gz cd apache-hive-2.3.4-bin/bin2.修改hadoop集群...原创 2019-03-22 18:02:35 · 341 阅读 · 0 评论 -
Apache Hive简介与Hive数据组织形式与DDL操作
1.Hive简介Apache Hive是FaceBook实现并开源出来的,它是一个基于Hadoop的数据仓库工具。Hive 1.x版本默认执行引擎是mapreduce,但是Hive 2.x版本开始支持使用Tez与spark作为执行引擎。2.数据仓库与数据库划分层面数据仓库数据库应用场景通常用于存储历史数据(离线分析),擅长OLAP,更加擅长查询操作,不支持update...原创 2019-03-19 10:50:11 · 243 阅读 · 0 评论 -
Apache Hive 数据类型
1.原子数据类型tinyintsmallintintbigintbooleanfloatdoublestring -- 双引号和单引号都可以timestamp2.复杂数据类型1)array 数组类型array:用于存放相同数据类型的一组数据,使用该类型时一定要使用泛型 <泛型> array<string>使用时需要指定分...原创 2019-03-21 19:45:37 · 168 阅读 · 0 评论 -
Apache Hive 下载与安装
1.hive产生背景mapreduce计算过程中,绝大多数的场景,分析结构化的数据,SQL语句处理起来更方便,而且开发成本更低。而使用mapreduce开发的话,无论是人工成本还是代码书写时间成本都会大大提高。2.hive是什么?对外提供hql编程(方言版SQL),底层数据存储在hdfs上,将hql语句转换为mapreduce程序运行的数据仓库。hive是一个工具,基于hadoop,提供h...原创 2019-03-18 10:41:24 · 2852 阅读 · 0 评论 -
Apache Hive order by与sort by以及distribute by 配合sort by 和cluster by的区别
1.order by与sort by以及distribute by 配合sort by 和cluster by的区别先记结论:order by: 全局排序,全局有序,无论数据量多大,只会有一个reducetask运行,所以当数据量比较大的时候,性能会大打折扣。(手动设置reducetask对其没有影响)sort by: 会根据数据量自动调整reducetask的个数的(hive2.x默认ma...原创 2019-03-21 08:48:22 · 516 阅读 · 0 评论 -
Apache Hive where|having以及group by使用注意事项
1.where与having使用注意事项两个与聚合函数使用时where 执行是在聚合函数之前,having是在聚合函数之后where是对聚合之前的数据做过滤的,having则是对聚合之后的数据(聚合结果)的过滤的。2.group by 分组① group by 执行顺序是在select 之前的。因此group by中不能使用select 后面字段的别名的。② 有group by 进行分...原创 2019-03-20 15:00:10 · 2581 阅读 · 0 评论 -
Apache Hive join操作
hive中对in 与 exists的查询比较弱,hive2中支持,但是性能比较差,hive1中不支持注意:hive中支持等值连接,但是不支持非等值连接hive 支持多关联键的连接的,但是仅仅支持and的,不支持or的。hive支持多表joinhive join分类:内连接,外连接和半连接1.内连接 inner join|join求两表交集select * fr...原创 2019-03-20 14:49:54 · 135 阅读 · 0 评论 -
Apache Hive 数据导出
1.单重导出local 表示导出到本地,否则导出到hdfsinsert overwrite [local] directory '目录路径' select xxxx from 表名 [where xxx];2.多重导出对表扫描一次,导出多个结果from xxxinsert overwrite local directory '' select * where age =1...原创 2019-03-20 14:32:06 · 136 阅读 · 0 评论 -
Apache Hive 多级分区数据的加载
1.创建多级分区创建多级分区:(多层分区目录)create table xxx( .....)partitioned by(dept string,sex string)row format delimitedfields terminated by ',';load 方式必须保证文件的前几个字段必须和表的字段顺序一致,保证数据就是这个分区的数据,不推荐2.insert 方式...原创 2019-03-20 14:27:30 · 1219 阅读 · 0 评论 -
Apache Hive 动态分区与静态分区的区别
1.分区名静态分区:手动指定分区名动态分区:根据查询语句自动生成的分区名2.数据静态分区: 有可能存在某一个分区中一条数据都没有动态分区:每一个分区至少有一条数据3.性能动态分区比静态分区的方式消耗性能,默认严格下动态分区至少有一个静态分区。注意:insert 方式只存储表字段,不存储分区字段分区表查询的时候,将分区字段看做普通字段进行查询就可以了...原创 2019-03-20 14:22:59 · 1291 阅读 · 0 评论 -
Apache Hive 内部表与外部表的区别
1.数据删除上内部表删除的时候原始表和元数据一并删除外部表在进行删除的时候只删除元数据,不删除原始数据2.建表语句,外部表需要使用external关键字,内部表则不需要3.数据管理权限内部表 hive自己管理的外部表 hive只有使用权限4.应用权限外部表 公共的数据(多个模流|多个部门) 建表的时候一般都需要指定location 公共数据有自己的hd...原创 2019-03-20 14:20:05 · 156 阅读 · 0 评论 -
Apache Hive 执行流程之select标准查询
select 字段 from 表 [limit 3];Hive中select *与select 全字段的性能比较,select *查询速度更慢?Hive中使用limit关键字比不使用limit关键字更慢?1.测试数据student表结构hive> desc student;OKstuid int ...原创 2019-03-23 20:58:40 · 316 阅读 · 0 评论