•创建数据文件test_partition_table.txt
•创建表
•create table test_partition_table (key string) partitioned by (dt string)
•加载数据
•LOAD DATA INPATH ‘filepath’ INTO TABLE test_partition_table partition (dt=‘2006’)
•查看数据
•select * from test_partition_table
•select count(*) from test_partition_table
•删除表 drop table test_partition_table
外部表
•指向已经在 HDFS 中存在的数据,可以创建 Partition
•它和 内部表 在元数据的组织上是相同的,而实际数据的存储则有较大的差异
•内部表 的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除
• 外部表 只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个 外部表 时,仅删除该链接
外部表简单示例
•创建数据文件test_external_table.txt
•创建表
•create external table test_external_table (key string)
•加载数据
•LOAD DATA INPATH ‘filepath’ INTO TABLE test_inner_table
•查看数据
•select * from test_external_table
•select count(*) from test_external_table
•删除表 drop table test_external_table
Bucket Table
•可以将表的列通过Hash算法进一步分解成不同的文件存储
•例如:将age列分散成20个文件,首先要对AGE进行Hash计算,对应为0的写入/warehouse/test/date=20120801/postion=zh/part-00000,对应为1的写入/warehouse/test/date=20120801/postion=zh/part-00001
•如果想应用很多的Map任务这样是不错的选择
Bucket Table简单示例
•创建数据文件test_bucket_table.txt
•创建表
•create table test_bucket_table (key string)
clustered by (key) into 20 buckets
•加载数据
•LOAD DATA INPATH ‘filepath’ INTO TABLE test_bucket_table
•查看数据
•select * from test_bucket_table
•set hive.enforce.bucketing = true;
Hive的数据模型-视图
•视图与传统数据库的视图类似
•视图是只读的
•视图基于的基本表,如果改变,指增加不会影响视图的呈现;如果删除,会出现问题
•如果不指定视图的列,会根据select语句后的生成
•示例
•create view test_view as select * from test
第七部分:HiveUI介绍
启动UI
•配置
•hive-site.xml 添加
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.8.1.war</value>
</property>
•
•启动Hive的UI sh $HIVE_HOME/bin/hive --service hwi