hive基本操作

1.创建表

  (1)创建内部表

      内部表:和数据库中的table基本一致,可直接理解为数据仓库中真实存在的表。

          a.每个table在hive中都有一个相应的目录存储数据(hive数据仓库文件存储在一般在HDFS的‘/user/hive/warehouse下,warehouse文件夹下的文件夹名即为表名’)  注:external表不在此目录下

          b.删除表时元数据与数据都会被删除

          

    注意:内部表创建一般分为创建表结构和导入数据两部分

    a.创建指定表结构:

  hive>>create table t1                   
    >>(tid int,tname string,age int)               #说明表结构
    >>location 'mytable/hive/t1'                #制定出创建数据表位置,location指的是hdfs系统上的位置     
>>row format delimited fields terminated by ',';    #制定分隔符

    上面只是创建了表的基本结构,没有进行数据导入,下面进行数据导入:

  load data local inpath '/home/yu/data/test.txt' into table t1;

 

    b.从hive中其他表拷贝

  hive>>create table t2
    >>row format delimited fields terminated by ','  #可省
    >>as
    >>select * from t1

   (2)创建分区表

      分区表:根据一定的条件将一个表分为多个分区表,可大大提高查询效率(查询效率可以由执行计划看出explain)

   (3)创建外部表

      外部表:a.元数据和内部表相同还是存储在数据库中,但是实际数据存储则存在较大差异

          b.外部表只有一个过程,创建表和加载数据同时完成,实际数据并不会移动到hive中,只是与外部数据建立一个链接,当删除外部表时仅仅删除该链接

          c.指向HDFS中存在的数据,可创建Partition

      注意:创建外部表时因为外部表的实际数据是存储在HDFS上的,因此不需要进行数据导入,只要创建表的结构即可

    因为创建外部表需要与hdfs上面的文件进行链接,因此我们首先将需要建立连接的表导入hdfs

    hdfs dfs -mkdir /data_deal              #首先创建目录,c
    hdfs dfs -put ‘/home/yu/data/1.txt’ '/data_deal  #将本地数据导入HDFS,注意重复这一操作向该目录中导入多个数据源,创建表时会将这些数据源构造成为一个表,并且这些数据源了随时增减,

     本地数据导入HDFS后就可以正式创建外部表了:

  hive>>create external table data_deal
    >>(ip string,body string)            #此处结构一定要和导入hdfs中的文件结构对应
    >>row format delimited fields terminated by '<--->'
    >>loction '/data_deal';

2.删除表

  drop table t1;

 3.其他的hive基本操作

  查看表的结构

  desc t1

  创建表后新加列

  alter table t1 add columns(english int);

 

视图

  视图是一张虚表,唯一的作用就是简化查询,和其他的无关

 

posted @ 2017-08-16 16:02  2017Crown  阅读(156)  评论(0编辑  收藏  举报