Hive创建外部表以及分区

创建带分区的外部表

创建外部表的优点是数据能够随时从hdfs中挂载进表中

使用分区的优点是能够缩短查询范围

以下的样例展示了怎样创建外部表

CREATE EXTERNAL TABLE my_daily_report(
    last_update string,
    col_a string,
    col_b string,
    col_c string,
    col_d string,
    col_e string,
    col_f string,
    col_g string,
    col_h string,
    col_i string,
    col_j string)
    PARTITIONED BY (
    par_dt string) location ‘/user/chenshu/data/daily‘;

挂载分区文件夹

alter table my_daily_report add partition (par_dt=‘20140530‘) location ‘/user/chenshu/data/daily/my_daily_report/20140530‘;

上面的样例仅仅使用了一个分区,事实上还能够使用多个分区,比方一个分区管理日报表,这个分区相应一个文件夹,在这个文件夹下还能够有小时分区,用不同的文件夹存放不同小时的报表。这时,分区之间的关系就是文件夹树的关系。

删除分区

当然也要提供一个删除part_dt=‘20140530‘分区的方法:

alter table my_daily_report drop partition (par_dt=‘20140530‘)

drop partition会将分区以及数据都删除,drop partition_spec会仅仅删除分区元数据,不删除数据。

注意,HIVE中没有delete from语句,假设仅仅是删除某个分区里全部语句,刚好这里能够使用drop partition来实现。

用分区查询

既然有了分区,假设紧要查找该分区上的数据,在where中指定分区文件夹作为查询条件,要快非常多

select count(*) from my_daily_report where par_dt=‘20140531‘;

推荐文章:

http://my.oschina.net/leejun2005/blog/82065

时间: 2024-08-19 03:17:41

Hive创建外部表以及分区的相关文章

hive中的表、外部表、分区和桶的理解

一.概念介绍 Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据 Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据.例如,一个表 pvs,它在 HDFS 中的路径为:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.wareh

oracle创建外部表

oracle db允许以只读的形式查询外部表.外部表可以存储在任何oracle db可以读取的存储设备中,其内容不在db中保存,db只保存external table的metadata,db可以查询(join.sort)external table,可以创建view.synonym,但不可以执行DML语句. 创建外部表语法create table --orginzition external,可以把外部表假想为一个view,可以正常的做select. analyze 和 虚拟列 表分析不使用与外

Oracle 创建外部表

Oracle 外部表能迅速的将海量的数据导入到数据库里面,外部表的创建使用步骤如下: 1 创建一个Directory:必须用sys用户创建,用户存放外部数据文件. create directory DIR_DATA as '/home/oracle/oradata/IN'; 给用户授权目录的使用权限,否则用户不能访问该目录以及其下的文件 grant write,read on directory DIR_DATA to Test; 2 将要导入的外部数据文件,Test_File.csv 放到目录

hive的外部表

最近买了一本hive看,发现书中有一个错误: 我的验证如下: 1.外部表数据存在自己表所属的目录下 2.还发现了 CTAS 操作不能 建立外部表 原文地址:https://www.cnblogs.com/wqbin/p/11484092.html

HIVE 创建外部分区表--利用HUE不能创建外部表

Create EXTERNAL table obd_data_2( imei string, ts timestamp, fuel_instant float, gps_speed float, gps_status string, gps_longitude float, gps_latitude float, direct_angle float, mileage_after int, mileage_before int, obdspeed int, torque int, front_x

HIVE创建HBASE表

CREATE TABLE card_data(KEY string,coorid string, coorname string,cooraddr string,roadnum string,speed string,direction string,date string,hphm string,ys string,cx string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTI

Hive 外部表 分区表

  之前主要研究oracle与mysql,认为hive事实上就是一种数据仓库的框架,也没有太多另类,所以主要精力都在研究hadoop.hbase,sqoop,mahout,近期略微用心看了下hive.事实上hive还是比我想象中好用的多,心里有点点暗爽,不论是与hadoop的衔接,还是在对外查询分析,定期hsql生成报表方面,都很方便.能够不用mapreduce.直接用hive生成报表. 真是方便.  Hive 提供两者表的两种使用方式,一种是内部表(托管表),第二种就是外部表. 对于两种表的使

HIVE外部表 分区表

HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容.        此时可以直接创建出hdfs文件夹,其中放置数据,再在hive中创建表管来管理,这种方式创建出来的表叫做外部表. #创建目录,上传已有文件        hadoop fs -mkdir /data        hadoop fs -put stude

hive中创建外部分区表测试

--创建外部表 CREATE EXTERNAL TABLE my_report( last_update string, col_a string) PARTITIONED BY ( par_dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' location '/user/hive/warehouse/zyz.db/my_report'; -----添加分区 alter table my_daily_report add partit