创建分桶的表

create table t_buck(id int ,name string) clustered by (id ) sorted by (id) into 4 buckets  ;

分桶表的数据不是直接导入(load)的,是从其他表里面查出来插入的

,插入时会在语句中加入约束的语句。

hive的存储格式介绍

hive表的存储格式; ORC格式的使用

hive 的DML操作

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

插入

  1. Standard syntax:
  2. INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
  3. INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;
  4.  
  5. Hive extension (multiple inserts):
  6. FROM from_statement
  7. INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1
  8. [INSERT OVERWRITE TABLE tablename2 [PARTITION ... [IF NOT EXISTS]] select_statement2]
  9. [INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2] ...;
  10. FROM from_statement
  11. INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1
  12. [INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2]
  13. [INSERT OVERWRITE TABLE tablename2 [PARTITION ... [IF NOT EXISTS]] select_statement2] ...;
  14.  
  15. Hive extension (dynamic partition inserts):
  16. INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;
  17. INSERT INTO TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;

设置

set hive.enforce.bucketing=true;

set mapreduce.job.reduces = 4;//和分桶的数量相同(设置reduce.tasks的个数)

set mapred.resuce.tasks=2; 设置reduce.tasks的个数

insert into table t_buck select id,name from t_sz02 cluster by (id) ; --观察此时的reducetask的数量

insert into table t_buck select id,name from t_sz02 distribute by (id) sort by (id desc);

使用sort by 可以指定排序,使用cluster by 不能,默认是升序。

最后就能得到分桶数据

分桶相当于mapreduce中的分区,hive中的分区表是将数据放在分好的文件夹里面

保存数据的方式

将结果保存到一张已经存在的hive表中

create table t_tmp as  select id,name from t_sz02; -- as 是必须的

insert into table t_buck select id,name from t_sz02 distribute by (id) sort by (id desc); 保存到已经存在数据的表中,as不是必须的 ,也可以加overwrite

insert overwrite  local directory '/home/hadoop/study' select * from t_tmp; 保持到本地文件系统中(也可以存在hdfs上去) overwrite是必须的,因为textoutputformat 不支持追加,只能覆盖

不是分区的表也可以使用sort by 来查询数据,或者导出数据。同理,分区表的数据也是没有分区的表经过 sort by 查询之后查出来的。

hive分桶 与保存数据的方式的更多相关文章

  1. hive 分桶及抽样调查

    1.分桶的概述 分区提供了一个隔离数据和优化查询的遍历方式.不是所有的数据集都可形成合力的分区 对于一张表或者分区,hive可以进一步组织成桶,也就是更为细粒度的数据范围 分区针对的是数据的存储路径( ...

  2. 二 Hive分桶

    二.Hive分桶 1.创建分桶表 create table t_buck (id string ,name string) clustered by (id) //根据id分桶 sorted by ( ...

  3. Hive分桶

    1.简介 分桶表是对列值取哈希值的方式将不同数据放到不同文件中进行存储.对于hive中每一个表,分区都可以进一步进行分桶.由列的哈希值除以桶的个数来决定数据划分到哪个桶里. 2.适用场景 1.数据抽样 ...

  4. hive分桶表bucketed table分桶字段选择与个数确定

    为什么分桶 (1)获得更高的查询处理效率.桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构.具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接 (Map ...

  5. IOS四种保存数据的方式

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...

  6. IOS 四种保存数据的方式

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...

  7. iOS 写入文件保存数据的方式

     在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeye ...

  8. 第2节 hive基本操作:11、hive当中的分桶表以及修改表删除表数据加载数据导出等

    分桶表 将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去 开启hive的桶表功能 set hive.enforce.bucketing= ...

  9. 入门大数据---Hive分区表和分桶表

    一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

随机推荐

  1. 动态页面,登陆,注册,留言 JSP

    登陆页 主要使用html表单,javascript验证注册信息 <%@ page language="java" contentType="text/html; c ...

  2. ORA-12537:TNS连接已关闭

      安装完11i的VIS版本后,客户端连接数据时会报“ORA-12537:TNS连接已关闭”,在网上找到以下解决办法: 今天在远程客户端配置EBS数据库连接的时候发生“ORA-12537:TNS连接已 ...

  3. css活用,评分点击星星

    1.字符图集 2.css样式 .cleanfloat::after{display: block; clear: both; content:""; visibility: hid ...

  4. python3+django使用celery执行某些任务失败的解决方案

    .在celery 的worker启动窗口设置export PYTHONOPTIMIZE=1 export PYTHONOPTIMIZE=1 /usr/local/python36/bin/celery ...

  5. win7上搭建ruby开发环境

    1. 安装ruby 可使用windows下的ruby安装工具rubyinstaller来方便地安装ruby解释器,可以http://rubyinstaller.org/网站上下载得到.安装时,看清安装 ...

  6. JQuery日记_5.14 Sizzle选择器(七)

    上篇说道,tokenize方法会把selector切割成一个个selector逻辑单元(如div>a是三个逻辑单元 'div','>','a')并为之片段赋予相应类型的过滤函数. for ...

  7. 除了cPickle,cjson外还有没有更高效点的序列化库了

    除了cPickle,cjson外还有没有更高效点的序列化库了 http://blog.csdn.net/chen_lovelotus/article/details/7228745 msgpack最快 ...

  8. 使用MyEclipse创建可执行jar

    MyEclipse请从这里下载: http://pan.baidu.com/s/1o6Jm5vk 具体步骤: 右键点工程->Export->选择Java下面的Runnable Jar Fi ...

  9. Digg工程师讲述Digg背后的技术

    虽然最近业绩有所下滑,也出现了一些技术故障,但Digg作为首屈一指的社会化新闻网站,其背后的技术还是值得一探,Digg工程师 Dave Beckett 在今年4月份写一篇名为<How Digg ...

  10. Session机制详细介绍

    Session机制详细介绍