IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据秋招学习笔记3 -> 正文阅读

[大数据]大数据秋招学习笔记3

Hive基础知识:
1)用于解决海量结构化日志的数据统计工具,可将结构的数据文件映射为一张表,并提供类 SQL 查询功能。本质就是将 HQL 转化成 MapReduce 程序。处理的数据存储在 HDFS上,分析数据底层的实现是 MapReduce,执行程序运行在 Yarn 上。
2)优缺点:
优点:(1)操作接口采用类 SQL 语法,提供快速开发的能力。
(2)避免了去写 MapReduce,减少开发人员的学习成本。
(3)优势在于处理大数据 。
(4)支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
缺点:(1)执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合。
(2)Hive 的 HQL 表达能力有限,迭代式算法无法表达,数据挖掘方面不擅长,由于 MapReduce 数据处理流程的限制,效率更高的算法无法实现。
(3)Hive 的效率比较低,自动生成的 MapReduce 作业,通常情况下不够智能化,调优比较困难,粒度较粗。
3)Hive与数据库的不同:
(1)Hive 中不建议对数据的改写,所有的数据都是在加载的时候确定好的。而数据库中的数据通常是需要经常进行修改的。
(2)Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导 致 Hive 执行延迟高的因素是 MapReduce 框架。相对的,数据库的执行延迟较低。
(3)Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。
4)外部表和内部表:
在删除表的时候,内部表(管理表)的元数据和数据会被一起删除,而外 部表只删除元数据,不删除数据。 内部表数据由Hive自身管理,外部表数据由HDFS管理。
5)对于大规模的数据集 order by 的效率非常低。在很多情况下,并不需要全局排序,此时可以使用 sort by。Sort by 为每个 reducer 产生一个排序文件。每个 reducer 内部进行排序,对全局结果集来说不是排序。
6)在有些情况下,我们需要控制某个特定行应该到哪个 reducer,通常是为了进行后续的聚集操作。distribute by 子句可以做这件事。distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。对于 distribute by 进行测试,一定要分配多 reducer 进行处理,否则无法看到 distribute by 的效果。distribute by 的分区规则是根据分区字段的 hash 码与 reducer 的个数进行模除后, 余数相同的分到一个区。Hive 要求 DISTRIBUTE BY 语句要写在 SORT BY 语句之前。
7)当 distribute by 和 sorts by 字段相同时,可以使用 cluster by 方式。cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序只能是升序排序,不能指定排序规则为 ASC 或者 DESC。
8)分区表:
(1)Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率 会提高很多。
(2)分区字段不能是表中已经存在的数据,可以将分区字段看作表的伪列。
(3)分区表加载数据时,必须指定分区 。
9)动态分区:
关系型数据库中,对分区表 Insert 数据时候,数据库自动会根据分区字段的值,将数据 插入到相应的分区中,Hive 中也提供了类似的机制,即动态分区(Dynamic Partition)。
10)分桶表:
分区针对的是数据的存储路径;分桶针对的是数据文件。
Hive 的分桶采用对分桶字段的值进行哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
分桶表操作需要注意的事项:
(1)reduce 的个数设置为-1,让 Job 自行决定需要用多少个 reduce 或者将 reduce 的个数设置为大于等于分桶表的桶数。
(2)从 hdfs 中 load 数据到分桶表中,避免本地文件找不到问题。
(3)不要使用本地模式。
11)Hive 支持的存储数据的格式主要有:TEXTFILE 、SEQUENCEFILE、ORC、PARQUET。
行存储的特点:
查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。
列存储的特点:
因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的
数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算 法。
在实际的项目开发当中,hive 表的数据存储格式一般选择:orc 或 parquet。压缩方式一 般选择 snappy,lzo。
12)hive优化有哪些?
(1)数据存储及压缩。 针对hive中表的存储格式通常有orc和parquet,压缩格式一般使用snappy。相比与textfile格式表,orc占有更少的存储。因为hive底层使用MR计算架构,数据流是hdfs到磁盘再到hdfs,而且会有很多次,所以使用orc数据格式和snappy压缩策略可以降低IO读写,还能降低网络传输量,这样在一定程度上可以节省存储,还能提升hql任务执行效率;
(2)通过调参优化:
并行执行,调节parallel参数;
调节jvm参数,重用jvm;
设置map、reduce的参数;
开启strict mode模式; 关闭推测执行设置。
(3)有效地减小数据集,将大表拆分成子表;结合使用外部表和分区表。
(4)SQL优化 :
大表对大表:尽量减少数据集,可以通过分区表,避免扫描全表或者全字段;
大表对小表:设置自动识别小表,将小表放入内存中去执行。
13)Hive小文件问题怎么解决:
(1) 使用 hive 自带的 concatenate 命令,自动合并小文件 。
concatenate 命令只支持 RCFILE 和 ORC 文件类型。
(2)调整参数减少Map数量 。
(3)减少Reduce的数量 。
(4)使用hadoop的archive将小文件归档 。Hadoop Archive简称HAR,是一个高效地将小文件放入HDFS块中的文件存档工具,它能够将多个小文件打包成一个HAR文件,这样在减少namenode内存使用的同时,仍然允许对文件进行透明的访问。
建议hive使用 orc 文件格式,以及启用 lzo 压缩。这样小文件过多可以使用hive自带命令 concatenate 快速合并。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:24:53  更:2021-08-08 11:26:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:06:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码