热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hive的分桶表

1分桶表原理分桶是相对分区进行更细粒度的划分;Hive表或分区表可进一步的分桶;分桶将整个数据内容按照某列取hash值,对桶的个数取模的方式决定该条记录存放在哪个桶当中;具有相同h

1 分桶表原理

Hive的分桶表

分桶是相对分区进行更细粒度的划分;Hive表或分区表可进一步的分桶;

分桶将整个数据内容按照某列取hash值,对桶的个数取模的方式决定该条记录存放在哪个桶当中;具有相同hash值的数据进入到同一个文件中;

比如按照name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。

  • 取模结果为==0==的数据记录存放到一个文件

  • 取模结果为==1==的数据记录存放到一个文件

  • 取模结果为==2==的数据记录存放到一个文件

2 分桶的作用

  • 1、取样sampling更高效。没有分区的话需要扫描整个数据集。

  • 2、提升某些查询操作效率,例如map side join

2.1在创建分桶表之前要执行的命令:

  • set hive.enforce.bucketing=true;开启对分桶表的支持

  • set mapreduce.job.reduces=4; 设置与桶相同的reduce个数(默认只有一个reduce)

2.2进入hive客户端然后执行以下命令:

-- 创建分桶表:
create table myhive.user_buckets_demo(id int, name string)
clustered by(id) 
into 4 buckets 
row format delimited fields terminated by '\t';
--加载数据到桶表user_buckets_demo中:

insert into table user_buckets_demo select * from user_demo;

2.3hdfs上查看表的数据目录

Hive的分桶表

2.4抽样查询桶表的数据:

tablesample抽样语句语法:tablesample(bucket x out of y)

  • x表示从第几个桶开始取数据;
  • y与进行采样的桶数的个数、每个采样桶的采样比例有关;
  • 如:

select * from user_buckets_demo tablesample(bucket 1 out of 2);

  • 需要采样的总桶数=4/2=2个
  • 先从第1个桶中取出数据
  • 1+2=3,再从第3个桶中取出数据。

3 Hive数据导入(3种)

3.1直接向表中插入数据(强烈不推荐使用)

insert into table score3 partition(mOnth='201807') values ('001','002','100');

3.2通过load加载数据

load data [local] inpath 'dataPath' overwrite | into table student [partition (partcol1=val1,…)];

如:load data local inpath '/install/hivedatas/score.csv' overwrite into table score3 partition(mOnth='201806');

3.3通过查询加载数据

insert overwrite table score5 partition(mOnth= '201806') select s_id,c_id,s_score from score;

4 Hive数据导出

4.1insert 导出

将查询的结果导出到本地:

insert overwrite local directory '/install/hivedatas/stu' select * from stu;

4.2将查询的结果格式化导出到本地

insert overwrite local directory '/install/hivedatas/stu2' row format delimited fields terminated by ',' select * from stu;

4.3将查询的结果导出到HDFS上

insert overwrite directory '/hivedatas/stu' row format delimited fields terminated by  ','  select * from stu;

4.4export导出到HDFS上

export table  myhive.stu to '/install/hivedatas/stuexport';

 


推荐阅读
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
author-avatar
see海是海天是天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有