Hive
Hive
大数据点滴
不忘初心,方得始终。
展开
-
如何避免Spark SQL做数据导入时产生大量小文件
在纯写SQL的情景中,可以在SQL后面加上distribute by 分区字段,cast(rand() * n as int)具体详解可参考:https://mp.weixin.qq.com/s/vmdkwDl7yP7cOWvL3Mittg原创 2021-03-30 09:32:08 · 376 阅读 · 0 评论 -
Hive的联级(cascade)- 修改分区表的字段类型或者增加新字段
一、问题描述踩坑:数仓的分区表,由于需求需要,要把int类型的字段改为bigint,我直接执行的以下语句: alter table table_name change column 字段 字段 bigint;出现的问题:之后的分区数据可以正常的显示,历史数据查出来的数据为0,无论insert overwrite重新导数据、把有问题的分区数据删掉都不能正常显示。尝试了在原来基础上执行:alter table table_name change column 字段 字段 bigin原创 2021-01-28 13:32:21 · 12864 阅读 · 2 评论 -
Hive 修复分区 MSCK REPAIR TABLE的使用
因为昨天工作的时候踩 了坑,所以来记录一下MSCK REPAIR TABLE 命令是做啥的MSCK REPAIR TABLE命令主要是用来:解决通过hdfs dfs -put或者hdfs api写入hive分区表的数据在hive中无法被查询到的问题。我们知道hive有个服务叫metastore,这个服务主要是存储一些元数据信息,比如数据库名,表名或者表的分区等等信息。如果不是通过hive的insert等插入语句,很多分区信息在metastore中是没有的,如果插入分区数据量很多的话,原创 2021-01-10 23:03:20 · 2366 阅读 · 0 评论 -
hive使用动态分区插入数据详解
目录一、静态分区弊端二、动态分区的使用一、静态分区弊端往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。二、动态分区的使用1、创建一个单一字段分区表hive> create table dpartition(id int ,name string ) partiti原创 2020-10-25 23:05:35 · 5517 阅读 · 0 评论 -
hive的列分隔符和行分隔符的使用
目录一、Hive中默认的分割符如下二、分隔符的指定与使用三、建好表之后更改字段分隔符一、Hive中默认的分割符如下分隔符 描述 \n 行分隔符 ^A 字段分隔符 \001 ^B array、struct的元素间的分隔符,map的键值对与键值对间分隔符 \002 ^C map中键与值之间的 分隔符\003 二、分隔符的指定与使用hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符。一般导入的文本数据字段分隔...原创 2020-10-25 22:33:43 · 11408 阅读 · 0 评论 -
HIve中日志存放位置
-- Hive中的日志分为两种1. 系统日志,记录了hive的运行情况,错误状况。2. Job 日志,记录了Hive 中job的执行的历史过程。系统日志存储在什么地方呢 ?在hive/conf/ hive-log4j.properties 文件中记录了Hive日志的存储情况,默认的存储情况:hive.root.logger=WARN,DRFAhive.log.dir=/tmp/${user.name} # 默认的存储位置hive.log.file=hive.log # 默认的文件名.原创 2020-10-10 00:30:13 · 11663 阅读 · 1 评论 -
Hive动态分区详解
往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。 1、创建一个单一字段分区表hive>create table dpartition(id int ,name string )partitioned by(ct string ); 2、往表里装载数据,并且动态建立分区,以city...原创 2020-10-06 19:01:47 · 13048 阅读 · 1 评论 -
Hive安装
目录1、 Hive安装地址2、 MySql安装2.1 安装包准备2.2 安装MySql2.3 配置MySql3、Hive安装部署4 、Hive元数据配置到MySql4.1 拷贝驱动4.2 配置Metastore到MySql5、 启动Hive5.1 初始化元数据库5.2 启动metastore和hiveserver25.3 HiveJDBC访问6、 Hive常用交互命令7、Hive其他命令操作8、 Hive常见属性配置8.1 Hive..原创 2020-08-19 01:53:48 · 3483 阅读 · 0 评论 -
Hive之企业级调优
目录1、 Fetch抓取2、 表的优化2.1 小表、大表Join2.2 大表Join大表2.3 MapJoin(MR引擎)2.4 Group By2.5 笛卡尔积2.6 行列过滤2.7 分桶2.8 分区3、合理设置Map及Reduce数(MR引擎)3.1 复杂文件增加Map数3.2 小文件进行合并3.3 合理设置Reduce数4、 并行执行5、 严格模式6、JVM重用7、 压缩8、 执行计划(Explain)附录:常见错..原创 2020-08-19 01:06:46 · 4010 阅读 · 0 评论 -
Hive压缩和存储
目录1、Hadoop压缩配置1.1 MR支持的压缩编码1.2 压缩参数配置2、 开启Map输出阶段压缩(MR引擎)3、 开启Reduce输出阶段压缩4、 文件存储格式4.1 列式存储和行式存储4.2 TextFile格式4.3 Orc格式4.4 Parquet格式4.5 主流文件存储格式对比实验5、存储和压缩结合5.1 测试存储和压缩1、Hadoop压缩配置1.1 MR支持的压缩编码 压缩格式 工具 ..原创 2020-08-19 00:10:17 · 2773 阅读 · 0 评论 -
Hive函数
目录1、 系统内置函数2、 常用内置函数2.1 空字段赋值2.2 CASE WHEN2.3 行转列2.4 列转行2.5日期相关函数3、 自定义函数4、 自定义UDF函数1、 系统内置函数1)查看系统自带的函数hive> show functions;2)显示自带的函数的用法hive> desc function upper;3)详细显示自带的函数的用法hive> desc function extended up..原创 2020-08-18 23:15:18 · 4339 阅读 · 0 评论 -
深入学习Hive应用场景及架构原理
链接:https://blog.csdn.net/py_123456/article/details/80292267转载 2020-08-18 00:46:48 · 3109 阅读 · 1 评论 -
Hive中的DDL与DML语句
一、DDL数据定义1、 创建数据库CREATE DATABASE [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];1)创建一个数据库,数据库在HDFS上的默认存储路径是:/user/hive/warehouse/*.dbhive (default)> crea原创 2020-08-17 23:25:06 · 5244 阅读 · 0 评论 -
Hbase和Hive以及传统数据库的区别
一、Hbase和HiveHBase 是一种类似于数据库的存储层,也就是说 HBase 适用于结构化的存储。并且 HBase 是一种列式的分布式数据库。HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。HBase 底层依旧依赖 HDFS 来作为其物理存储,这点类似于 Hive。逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map。1.实原创 2020-08-09 11:17:32 · 3596 阅读 · 0 评论 -
Hive 数据类型
1. 基本数据类型对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。2. 集合数据类型Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。3. 案例实操3.1 假设某表有如下一行,我们用JSON格式来表示其数据结构原创 2020-07-30 23:54:07 · 3260 阅读 · 0 评论 -
Hive数据类型转换
一、类型转化Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。1)隐式类型转换规则如下(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。(2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成D原创 2020-07-30 23:10:06 · 7528 阅读 · 0 评论 -
Hive的优缺点及框架概念
1. 什么是HiveHive:由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质是:将HQL转化成MapReduce程序(1)Hive处理的数据存储在HDFS(2)Hive分析数据底层的实现是MapReduce(3)执行程序运行在Yarn上2. 优点(1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。(2)避免了去写MapReduce,减少开发人员原创 2020-07-30 22:55:53 · 1683 阅读 · 0 评论 -
Hive的Rank函数
一、函数说明RANK() 排序相同时会重复,总数不会变DENSE_RANK() 排序相同时会重复,总数会减少ROW_NUMBER() 会根据顺序计算PERCENT_RANK:百分比排序二、示例说明示例表:(1)创建hive表并导入数据create table score(name string,subject string, score int) row format delimited fields terminated by "\t";load data local in原创 2020-07-30 11:55:32 · 7772 阅读 · 0 评论 -
Hive窗口函数(开窗函数)
一、相关函数说明over():指定聚合函数工作的数据窗口的大小,这个数据窗口大小会随着行的变而变化。over跟在聚合函数后面,只对聚合函数生效。current row:当前行n preceding:往前n行数据n following:往后n行数据unbounded:起点:unbounded preceding 表示从前面的起点开始,unbounded following表示到后面的终点结束lag(col,n):往前第n行数据lead(col,n):往后第n行数据ntile(n):把有原创 2020-07-30 11:33:20 · 3511 阅读 · 1 评论 -
Hive分桶表的基本操作及结构
一、为何分桶分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分。分桶是将数据集分解成更容易管理的若干部分的另一个技术。分区针对的是数据的存储路径;分桶针对的是数据文件。分桶是指定分桶表的某一列,让该列数据按照哈希取模的方式随机、均匀地分发到各个桶文件中。因为分桶操作需要根据某一列具体数据来进行哈希取模操作,故指定的分桶列必须基于表中的某一列(字段)。因为分桶改变了数据的存储方式,它会把哈原创 2020-07-30 00:22:48 · 1813 阅读 · 0 评论 -
Hive分区表的基本操作及结构
一、分区表概述我们知道传统的DBMS系统一般都具有表分区的功能,通过表分区能够在特定的区域检索数据,减少扫描成本,在一定程度上提高查询效率,当然我们还可以通过进一步在分区上建立索引进一步提升查询效率。在此就不赘述了。在Hive数仓中也有分区分桶的概念,在逻辑上分区表与未分区表没有区别,在物理上分区表会将数据按照分区键的列值存储在表目录的子目录中,目录名=“分区键=键值”。其中需要注意的是分区键的值不一定要基于表的某一列(字段),它可以指定任意值,只要查询的时候指定相应的分区键来查询即可。我们可以对分区进原创 2020-07-29 19:10:03 · 5112 阅读 · 1 评论 -
Hive和数据库比较
由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。1.1 查询语言由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL原创 2020-07-28 23:10:31 · 1685 阅读 · 0 评论