Hive的数据模型—桶表


概述

桶表是对数据进行哈希取值,然后放到不同文件中存储。

数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。
物理上,每个桶就是表(或分区)目录里的一个文件,一个作业产生的桶(输出文件)和reduce任务个数相同。


作用

桶表专门用于抽样查询,是很专业性的,不是日常用来存储数据的表,需要抽样查询时,才创建和使用桶表。


实验

创建

[22:39:03]hive (zmgdb)> create table bucket_t1(id string)
[22:39:26]            > clustered by(id) into 6 buckets;

[22:39:27]OK
[22:39:27]Time taken: 0.546 seconds
clustered by:以哪个字段分桶。对id进行哈希取值,随机  地放到4个桶里。

-----------------------------


准备数据

[root@hello110 data]# vi bucket_test
1
2
3
4
5
6

.............

.........


导入数据

正确的导入方式:从日常保存数据的表insert


[21:27:45]hive (zmgdb)> create table t2(id string);
[21:27:45]OK
[21:27:45]Time taken: 0.073 seconds
[21:28:24]hive (zmgdb)> load data local inpath '/data/bucket_test' into table t2;
[21:28:24]Loading data to table zmgdb.t2
[21:28:25]OK

从日常表导入

[22:39:47]hive (zmgdb)> insert overwrite table bucket_t1 select id from t2;

hive会启动mapreduce
[22:39:48]WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
[22:39:48]Query ID = hadoop_20160922063946_34bf30c4-3f23-43e9-ad8f-edd5ee214948
[22:39:48]Total jobs = 1
[22:39:48]Launching Job 1 out of 1
[22:39:48]Number of reduce tasks determined at compile time: 6
[22:39:48]In order to change the average load for a reducer (in bytes):
[22:39:48]  set hive.exec.reducers.bytes.per.reducer=<number>
[22:39:48]In order to limit the maximum number of reducers:
[22:39:48]  set hive.exec.reducers.max=<number>
[22:39:48]In order to set a constant number of reducers:
[22:39:48]  set mapreduce.job.reduces=<number>
[22:39:51]Starting Job = job_1474497386931_0001, Tracking URL = http://hello110:8088/proxy/application_1474497386931_0001/
[22:39:51]Kill Command = /home/hadoop/app/hadoop-2.7.2/bin/hadoop job  -kill job_1474497386931_0001
[22:39:59]Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 6
[22:39:59]2016-09-22 06:39:59,419 Stage-1 map = 0%,  reduce = 0%
[22:40:06]2016-09-22 06:40:05,828 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.63 sec
[22:40:12]2016-09-22 06:40:12,347 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 3.48 sec
[22:40:16]2016-09-22 06:40:15,739 Stage-1 map = 100%,  reduce = 33%, Cumulative CPU 5.4 sec
[22:40:17]2016-09-22 06:40:16,807 Stage-1 map = 100%,  reduce = 50%, Cumulative CPU 7.52 sec
[22:40:19]2016-09-22 06:40:18,929 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 11.35 sec
[22:40:20]2016-09-22 06:40:19,991 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 13.19 sec
[22:40:21]MapReduce Total cumulative CPU time: 13 seconds 190 msec
[22:40:21]Ended Job = job_1474497386931_0001
[22:40:21]Loading data to table zmgdb.bucket_t1
[22:40:22]MapReduce Jobs Launched: 
[22:40:22]Stage-Stage-1: Map: 1  Reduce: 6   Cumulative CPU: 13.19 sec   HDFS Read: 25355 HDFS Write: 1434 SUCCESS
[22:40:22]Total MapReduce CPU Time Spent: 13 seconds 190 msec
[22:40:22]OK
[22:40:22]id
[22:40:22]Time taken: 34.91 seconds



错误的导入方式:从文件load data 

hive (zmgdb)> create table bucket_t2 like bucket_t1;
OK
Time taken: 0.707 seconds

hive (zmgdb)> load data local inpath '/data/bucket_test' into table bucket_t2;
Loading data to table zmgdb.bucket_t2
OK
Time taken: 1.485 seconds



没有启动mapreduce对数据进行哈希取值,只是简单的原样导入,没有起到抽样查询的目的。通过select * from 比较会发现bucket_t1的数据和bucket_t2的数据顺序是不同的,bucket_t2的表顺序与原数据文件顺序一致,没有做过哈希取值。


查询

select * from bucket_table tablesample(bucket x out of y on column);
tablesample是抽样语句
语法解析:TABLESAMPLE(BUCKET x OUT OF y on 字段)
y必须是table总bucket数的倍数或者因子。
hive根据y的大小,决定抽样的比例。
例如,table总共分了64份,当y=32时,抽取(64/32=)2个bucket的数据,当y=128时,抽取(64/128=)1/2个bucket的数据。x表示从哪个bucket开始抽取。
例如,table总bucket数为32,tablesample(bucket 3 out of 16),表示总共抽取(32/16=)2个bucket的数据,分别为第3个bucket和第(3+16=)19个bucket的数据。如果是y=64,则抽取半个第3个桶的值。


[22:44:31]hive (zmgdb)> select * from bucket_t1 tablesample (bucket 1 out of 6 on id);
[22:44:31]OK
[22:44:31]bucket_t1.id
[22:44:31]6
[22:44:31]iu
[22:44:31]0
[22:44:31]6
[22:44:31]hj
[22:44:31]6
[22:44:31]6
[22:44:31]51
[22:44:31]
[22:44:31]
[22:44:31]r
[22:44:31]99
[22:44:31]0
[22:44:31]57
[22:44:31]loo
[22:44:31]r
[22:44:31]r
[22:44:31]r
[22:44:31]60
[22:44:31]66
[22:44:31]75
[22:44:31]6
[22:44:31]84
[22:44:31]x
[22:44:31]24
[22:44:31]93
[22:44:31]99
[22:44:31]105
[22:44:31]f
[22:44:31]r
[22:44:31]114
[22:44:31]0
[22:44:31]123
[22:44:31]129
[22:44:31]132
[22:44:31]x
[22:44:31]138
[22:44:31]141
[22:44:31]147
[22:44:31]33
[22:44:31]150
[22:44:31]156
[22:44:31]r
[22:44:31]f
[22:44:31]39
[22:44:31]15
[22:44:31]r
[22:44:31]ddd
[22:44:31]
[22:44:31]06
[22:44:31]hj
[22:44:31]f
[22:44:31]l
[22:44:31]f
[22:44:31]f
[22:44:31]f
[22:44:31]f
[22:44:31]42
[22:44:31]f
[22:44:31]r
[22:44:31]r
[22:44:31]f
[22:44:31]f
[22:44:31]r
[22:44:31]48
[22:44:31]6
[22:44:31]Time taken: 0.142 seconds, Fetched:66 row(s)


[22:44:43]hive (zmgdb)> select * from bucket_t1 tablesample (bucket 1 out of 60 on id);
[22:44:43]OK
[22:44:43]bucket_t1.id
[22:44:43]
[22:44:43]
[22:44:43]loo
[22:44:43]x
[22:44:43]114
[22:44:43]132
[22:44:43]x
[22:44:43]150
[22:44:43]ddd
[22:44:43]

[22:44:43]Time taken: 0.064 seconds, Fetched: 10 row(s)




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

delphi bmp绘制矢量文件效率慢_聊一聊矢量瓦片的常识

一、矢量瓦片的基本原理和相关格式现阶段&#xff0c;电子地图瓦片主要使用两种方式&#xff0c;一种是传统的栅格瓦片&#xff0c;另外一种是新出的矢量瓦片(Vector Tiles)&#xff0c;前者是采用四叉树金字塔模型的分级方式&#xff0c;将地图切割成无数大小相等的矩形栅格图…

python生成器与迭代器。

生成器 在python 中一边循环一边计算的机制&#xff0c;叫做生成器(generator)。 通过列表生成式&#xff0c;我们可以直接创建一个列表。但是&#xff0c;收到内存的限制&#xff0c;列表容量肯定是有限的。而且&#xff0c;创建一个包含100万个元素的列表&#xff0c;不仅占用…

python怎样将list转化成字典_在python 中如何将 list 转化成 dictionary

原标题&#xff1a;在python 中如何将 list 转化成 dictionary 问题1&#xff1a;如何将一个list转化成一个dictionary&#xff1f; 问题描述&#xff1a;比如在python中我有一个如下的list&#xff0c;其中奇数位置对应字典的key&#xff0c;偶数位置为相应的value解决方案: 1…

vscode gcc debug dbg gdb c cpp c++ cuckoo monitor

为什么80%的码农都做不了架构师&#xff1f;>>> 装cygwin 或者mingGW&#xff0c;装gcc工具链&#xff0c;并将cygwin的bin目录加入环境变量PATH中。 ctrlshiftb {// See https://go.microsoft.com/fwlink/?LinkId733558// for the documentation about the tasks…

python爬取知网论文关键词_Python爬虫根据关键词爬取知网论文摘要并保存到数据库中...

由于实验室需要一些语料做研究&#xff0c;语料要求是知网上的论文摘要&#xff0c;但是目前最新版的知网爬起来有些麻烦&#xff0c;所以我利用的是知网的另外一个搜索接口 搜索出来的结果和知网上的结果几乎一样 在这个基础上&#xff0c;我简单看了些网页的结构&#xff0c;…

网页中查看pdf文档

2019独角兽企业重金招聘Python工程师标准>>> 介绍&#xff1a; PDFObject 是一个 JavaScript 库&#xff0c;用来在HTML中动态嵌入 PDF 文档。 实现代码&#xff1a; <script type"text/javascript" src"pdfobject.js"></script>…

python opencv 读取视频流不解码_python + opencv: 解决不能读取视频的问题

博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像&#xff0c;程序如下&#xff1a; cap cv2.VideoCapture(0) ret, frame cap.read()使用这个程序能够打开摄像头并获取图像&#xff0c;一切正常。 接着想使用OpenCv播放视频&#xff0c;按照官方教程只要将VideoCaptu…

jmeter提取mysql返回值_jmeter连接数据库和提取数据库返回值

一、在MySQL命令行中&#xff0c;验证MySQL是否能正常登陆。若不能登陆&#xff0c;则重置MySQL的密码。二、下载mysql-connector-java-5.1.45-bin.jar&#xff0c;将其放入Jmeter安装目录的lib目录下。完成MySQL数据库的驱动。三、右键“线程组”->“配置元件”->“JDBC…

用python画雨滴_Python编程从入门到实践练习(雨滴)

雨滴&#xff1a;寻找一幅雨滴图像&#xff0c;并创建一系列整齐排列的雨滴。让这些雨滴往下落&#xff0c;直到到达屏幕后消失。 先说今天的问题&#xff1a; 1.在更改函数形参时&#xff0c;调用的时候也要修改&#xff0c;否则会出现AttributeError 值得注意的是&#xff1a…

Hive文件格式

Hive有四种文件格式&#xff1a;TextFile&#xff0c;SequenceFile&#xff0c;RCFile&#xff0c;ORC TextFile 默认的格式&#xff0c;文本格式。 SequenceFile 简介 见&#xff1a;http://blog.csdn.net/zengmingen/article/details/52242768 操作 hive (zmgdb)>cre…

learnpythonthehardway下载_Python【十一】:阶段小结

今天来将前一段时间学习的Python的知识系统地梳理一遍&#xff0c;接下来开始实际的编程实践了。 一、Python实验环境搭建 使用Python编程&#xff0c;首先要有一个开发环境&#xff0c;如同C/C上又VS2008家族一样&#xff0c;Linux/MacOS上的部署情况这里不再详述&#xff0c;…

Django 博客教程(三):创建应用和编写数据库模型

创建 django 博客应用 在上一章节中我们创建了 django 博客的工程&#xff0c;并且成功地运行了它。然而这一切都是 django 为我们创建的项目初始内容&#xff0c;django 不可能为我们初始化生成我们需要的博客代码&#xff0c;这些功能性代码都得由我们自己编写。 django 鼓励…

python将16进制字符串转换为整数_Python 16进制与字符串的转换

电脑上装了Python2.7和3.3两个版本&#xff0c;平时运行程序包括在Eclipse里面调试都会使用2.7&#xff0c;但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理&#xff0c;因为这样可以对两个版本的差异有一个测试&#xff0c;而且虚拟机里面是2.…

华为读取版本exe_关于esrv_svc.exe和SurSvc.exe疑似泄露用户信息的猜测

封面图片来源&#xff1a;https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉&#xff0c;写网页文章的次数不多&#xff0c;排版没研究过&#xff0c;请原谅。下面是正题&#xff1a;由来&#xff1a;最初是借由火绒的自定义防护规则&#xff0c;…

flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

摘要&#xff1a; 一杯茶的功夫部署完成机器学习模型&#xff01;在生产环境中部署机器学习模型是数据工程中经常被忽视的领域。网上的大多数教程/博客都侧重于构建、训练和调整机器学习模型。如果它不能用于实际的预测&#xff0c;那么它又有什么用呢&#xff1f; 接下来了解一…

Hive 导入CSV文件

SerDe 介绍 Hive 使用如下FileFormat 类读写 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 读写普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 读写SequenceFile格式的HDFS文件. Hive 使用如下SerDe 类(反)序列化数据: MetadataTyp…

腾讯云mysql架构_一个数据库存储架构的独白

本文由云社区发表本文作者&#xff1a;许中清&#xff0c;腾讯云自研数据库CynosDB的分布式存储CynosStore负责人。从事数据库内核开发、数据库产品架构和规划。曾就职于华为&#xff0c;2015年加入腾讯&#xff0c;参与过TBase(PGXZ)、CynosDB等数据库产品研发。专注于关系数据…

groupby索引有效吗_SQL IN 一定走索引吗?

摘要IN 一定走索引吗&#xff1f;那当然了&#xff0c;不走索引还能全部扫描吗&#xff1f;好像之前有看到过什么Exist,IN走不走索引的讨论。但是好像看的太久了&#xff0c;又忘记了。哈哈&#xff0c;如果你也忘记了MySQL中IN是如何查询的&#xff0c;就来复习下吧。问题问题…

推荐系统之 BPR 算法及 Librec的BPR算法实现【1】

【推荐系统之 BPR 算法】 1、关于BPR的论文原文&#xff1a; BPR: Bayesian Personalized Ranking from Implicit Feedback 2、参考1&#xff1a;论文快读 - BPR: Bayesian Personalized Ranking from Implicit Feedback &#xff08;该博主的网站不错&#xff0c;尤其论文快…

ios 筛选_万千网友让quot;低调使用quot;的软件!居然还支持iOS

点击蓝字关注我们昨天的耳朵神器大家感觉怎么样&#xff1f;享受了耳朵今天我们享受一下眼睛~可能很多同学对漫画是情有独钟但是&#xff0c;之前小黑一直介绍的都是安卓端的软件今天要给大家介绍的这款软件是IOS安卓都有终于可以不被IOS的同学吐槽了而且经过测试小黑真的想说一…