Hive编程指南--管理表和外部表

来源:互联网 发布:大数据培训视频 编辑:程序博客网 时间:2024/05/16 04:57

管理表: 

管理表也被称为内部表。因为这种表,hive会或多或少的控制着数据的生命周期,正如我们所看见的,Hive默认情况下会将这些数据存储在配置项hive.metastore.warehouse.dir

(例如,/user/hive/warehouse)所定义的目录下。

当我们删除一个管理表时,hive也会删除这个目录中的数据,但是,管理表不方便和其他工作共享数据。例如,假设我们有一份由pig或者其他工具创建并且主要由这一工具使用的数据,同时我们还想使用hive在这份数据上执行查询,可是没有给予hive对数据的所有权,我们可以创建一个外部表指向这份数据而不需要对其具有所有权。

外部表:

create external table hive_part_sale_detail(            
             Z0PLANT    string             
            ,MATERIAL   string             
            ,ZOF_TYPE   string             
            ,RPA_CST    decimal(17,2)      
            ,RPA_SAT    decimal(17,2)      
            ,RPA_ETS2   string             
            ,SALES_UNIT string             
            ,RPA_RLQ    decimal(17,3)      
            ,BASE_QTY   decimal(17,3)      
            ,RPA_TNR    string )          
    partitioned by (RPA_ETS1 string)       
   ROW FORMAT DELIMITED                    
   FIELDS TERMINATED BY ',' 
   STORED AS orc

   location '/data/stocks';

关键字external告诉hive这个表是外部的,而后面的location....字句则用于hive数据位于那个数据下,因为表是外部的,所以hive并非认为其完全拥有这份数据

因此,删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。

好的软件设计的一般原则是表达意图。如果数据会被多个工具共享,那么可以创建一个外部表,来明确对数据的所有权。


0 0
原创粉丝点击