hive表新建外部表关联hdfs文件

2018-02-08 10:25:48来源:oschina作者:-九天-人点击

分享
已经安装好Hadoop和hive环境,hive把元数据存储在mysql数据库。这里仅讨论外部表和HDFS的关联,并且删掉外部表之后,对HDFS上的文件没有影响在HDFS创建分区,并存有文件
在hdfs中存入文件,以日期为partition,数据文件格式如下:
-rw-r--r-- 3 bigdata supergroup16031 2018-02-07 09:40 /user/bigdata/dataflowpre/20180207/10.37.167.204_25_1_2018020709.1517967113614

文件中的数据格式如下:


2;Lily;1991;Shanghai
3;Jack;1992;Guangxi
4;Jenny;1999;Xinjiang
5;Jay;1995;Xizang
6;Tom;1990;Beijing
7;Lily;1991;Shanghai
8;Jack;1992;Guangxi
9;Jenny;1999;Xinjiang
10;Jay;1995;Xizang创建hive外部表(建表语句没有用location直接关联HDFS文件)
根据HDFS上的源文件里面的数据格式,创建hive外部表。
create external table t4 (seq int,name string,year int, city string) partitioned by (day string) row format delimited fields terminated by '/073' stored as textfile;

源文件里面列之间的分隔符是分号,hive里面分号是特殊符号(命令执行结束符),如果建表语句里面用分号则会出错,使用分号的ascii码'/073'(这里用了八进制码)则正常。
查看t4的表结构:

表格已经成功创建。


关联HDFS文件
hive并不会自动关联hdfs中指定目录的partitions目录,需要手工操作。
通过给已经创建的表增加分区数据的方式,与HDFS上的文件相互关联起来。
语法格式:
alter table 表名称 add partition (分区名1=分区值1,...) location 'HDFS上的文件的路径';

关联20180207的分区:


alter table t4 add partition (day=20180207) location '/user/bigdata/dataflowpre/20180207';

执行下面命令,查看表格可以发现数据已经导入。


select * from t4;

得到如下图所示:

但是最前面一列为何是null还不清楚,后面继续查。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台