Hive表有受控表(内部表)、外部表、分区表、桶表四种。

 
内部表,就是一般的表,前面讲到的表都是内布标,当表定义被删除的时候,表中的数据随之一并被删除。
 
外部表,数据存在与否和表的定义互不约束,仅仅只是表对hdfs上相应文件的一个引用,当删除表定义的时候,表中的数据依然存在。
 
创建外部表,external是外部表的关键字,也是和内部表有区别的地方
create external table tblName(colName colType...);
加载数据
alter table tblName set location 'hdfs_absolute_uri';
 
外部表还可以在创建表的时候指定数据的位置,引用当前位置的数据。
create external table tblName(colName colType...) location 'hdfs_absolute_uri';
 
内部表和外部表的转换:
内——>外
alter table tblName set tblproperties('EXTERNAL'='TRUE');
外——>内
alter table tblName set tblproperties('EXTERNAL'='FALSE');
 
分区表
如何创建一张分区表?只需要在之前的创建表后面使用partition by加上分区字段就可以了,eg.
  create table tblName (
   id int comment 'ID',
   name string comment 'name' 
  ) partitioned by (dt date comment 'create time')
  row format delimited
  fields terminated by '\t';
 
如何加载数据?
load data local inpath linux_fs_path into table tblName partition(dt='2015-12-12');
 
分区的一些操作:
查询分区中的数据:select * from tblName where dt='2015-12-13';(分区相当于where的一个条件)
手动创建一个分区:alter table tblName add partition(dt='2015-12-13');
查看分区表有哪些分区:show partitions tblName;
删除一个分区(数据一起删掉了):alter table tblName drop partition(dt='2015-12-12');
 
多个分区如何创建?
和单分区表的创建类似:
  create table tblName (
   id int comment 'ID',
   name string comment 'name' 
  ) partitioned by (year int comment 'admission year', school string comment 'school name')
  row format delimited
  fields terminated by '\t';
 
同时也可以从hdfs上引用数据:
alter table tblName partition(year='2015', school='crxy') set location hdfs_uri;
注意:
必须得现有分区,必须要使用hdfs绝对路径。
 
桶表
桶表是对数据进行哈希取值,然后放到不同文件中存储。查看每个桶文件中的内容,可以看出是通过对 buckets 取模确定的。
如何创建桶表?
create table tblName_bucket(id int) clustered by (id) into 3 buckets;
说明:
clustered by :按照什么分桶
into x buckets:分成x个桶
如何加载数据?
不能使用load data这种方式,需要从别的表来引用
insert into table tblName_bucket select * from tbl_other;
注意:在插入数据之前需要先设置开启桶操作,不然插入数据不会设置为桶!
set hive.enforce.bucketing=true;
桶表的主要作用:
数据抽样
提高某些查询效率
注意:
需要特别注意的是:clustered by 和 sorted by 不会影响数据的导入,这意味着,用户必须自己负责数据如何导入,包括数据的分桶和排序。
'set hive.enforce.bucketing = true'可以自动控制上一轮 reduce 的数量从而适配 bucket 的个数,
当然,用户也可以自主设置 mapred.reduce.tasks 去适配bucket 个数,
推荐使用'set hive.enforce.bucketing = true'。

hive 表类型的更多相关文章

  1. Hive 表类型简述

    Hive 表类型简述   表类型一.管理表或内部表Table Type:  MANAGED_TABLE example: create table  Inner(id int,name string, ...

  2. Spark DataFrame vector 类型存储到Hive表

    1. 软件版本 软件 版本 Spark 1.6.0 Hive 1.2.1 2. 场景描述 在使用Spark时,有时需要存储DataFrame数据到Hive表中,一般的存储方式如下: // 注册临时表 ...

  3. spark+hcatalog操作hive表及其数据

    package iie.hadoop.hcatalog.spark; import iie.udps.common.hcatalog.SerHCatInputFormat; import iie.ud ...

  4. 导hive表项目总结(未完待续)

    shell里面对日期的操作 #!/bin/bash THIS_FROM=$(date +%Y%m%d -d "-7 day") THIS_TO=$(date +%Y-%m-%d - ...

  5. Spark 读写hive 表

    spark 读写hive表主要是通过sparkssSession 读表的时候,很简单,直接像写sql一样sparkSession.sql("select * from xx") 就 ...

  6. sqoop mysql导入hive 数值类型变成null的问题分析

    问题描述:mysql通过sqoop导入到hive表中,发现有个别数据类型为int或tinyint的列导入后数据为null.设置各种行分隔符,列分隔符都没有效果. 问题分析:hive中单独将有问题的那几 ...

  7. 将DataFrame数据如何写入到Hive表中

    1.将DataFrame数据如何写入到Hive表中?2.通过那个API实现创建spark临时表?3.如何将DataFrame数据写入hive指定数据表的分区中? 从spark1.2 到spark1.3 ...

  8. sqoop导入数据到hive表中的相关操作

    1.使用sqoop创建表并且指定对应的hive表中的字段的数据类型,同时指定该表的分区字段名称 sqoop create-hive-table --connect "jdbc:oracle: ...

  9. 关于hive表同步类型问题

    今天华为做实施的时候发现kylin做刷cube的时候发现源表数据类型不适合刷到kylin提供查询接口.问了下同事发现一个比较简单的解决办法. 源表是String类型,做hive视图可以做个hive表提 ...

随机推荐

  1. Android开发之Activity

    活动(Activity) 活动是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户交互. FirstActivity 手动创建活动 新建一个project,不再选择empty act ...

  2. 第四周Access的总结

    一.问;这节课你学到了什么知识? 答:这周我们学习了新的课程:表的建立和管理.这是Access最重要的一部份,需要我们认认真真学习!            字段是表最重要的信息,而数据类型是字段或表中 ...

  3. ESP32 windows开发环境的搭建(官方方法)

    首先保证电脑中的已经下载了git客户端,没有的自行去https://git-scm.com/下载 STEP1: 获得编译工具链 Windows没有内置的“make”环境,所以安装工具链你将需要一个兼容 ...

  4. [ 9.29 ]CF每日一题系列—— 765B字符串规律

    Description: 遇到了ogo可以变成***如果ogo后面有go统统忽略,输出结果 Solution: 哎如果我一开始对题意的解读如上的话,就不会被整的那么麻烦了 Code: #include ...

  5. 技术文档生成工具:appledoc

    做项目一般都会要求写技术文档,特别是提供SDK或者基础组件的.如果手写这类技术文档的话,工作量比编写代码也少不了多少.比如 Java 语言本身就自带 javadoc 命令,可以从源码中抽取文档.本篇我 ...

  6. 【接口时序】2、Verilog实现流水灯及与C语言的对比

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1.FPGA型号:XC6SLX45 ...

  7. 简介jsp

    1.JSP简介 Java动态网页技术标准(Java Server Pages)是基于Servlet技术以及整个Java体系的Web开发技术是用于动态生成HTML文档的Web页面模板JSP是为了改进Se ...

  8. 《分布式Java应用与实践》—— 后面两章

    failover? NAT IP-tunneling DSR vrrp gossip 什么是2PC? 什么是3PC? 什么是Pasox? sna? dal? mpi?

  9. web API简介(四):客户端储存之IndexedDB API

    概述 前篇:web API简介(三):客户端储存之Web Storage API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. Index ...

  10. Shell - 简明Shell入门

    本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...