Hive 建立 最简单的table 从 文件 导入数据 带 分区 参数 partitioned

表定义文件

create table people(
id STRING,
name STRING,
likes ARRAY<string>,
addr MAP<string,string>
)
ROW FORMAT DELIMITED
 FIELDS TERMINATED BY '\t'
 COLLECTION ITEMS  TERMINATED BY ','
 MAP KEYS  TERMINATED BY ':'
STORED AS TEXTFILE;

下面是放入文本文件里的数据,文件名和路径也可以随便取,我这里是放在/tmp/test.txt,注意这里文本直接使用tab来分割的,不是空格

1   zs  game,girl,money stuAddr:changsha,workAddr:beijing
1   ls  game,girl,money stuAddr:changsha,workAddr:beijing

在hive里导入数据

load data local inpath '/tmp/test.txt' into table people;

验证数据 select * from people

hive> select * from people;
OK
1   zs  ["game","girl","money"] {"stuAddr":"changsha","workAddr":"beijing"}
1   ls  ["game","girl","money"] {"stuAddr":"changsha","workAddr":"beijing"}
Time taken: 0.158 seconds, Fetched: 2 row(s)
hive>  select addr['stuAddr'] from people where name='zs';
OK
changsha
Time taken: 0.188 seconds, Fetched: 1 row(s)

带分区的表定义语句

create table people(
id STRING,
name STRING,
likes ARRAY<string>,
addr MAP<string,string>
)
partitioned by (dt string)
ROW FORMAT DELIMITED
 FIELDS TERMINATED BY '\t'
 COLLECTION ITEMS  TERMINATED BY ','
 MAP KEYS  TERMINATED BY ':'
STORED AS TEXTFILE;

同时需要变更对应的数据文件


1       zs      game,girl,money stuAddr:changsha,workAddr:beijing       2016-1-1
1       ls      game,girl,money stuAddr:changsha,workAddr:beijing       2016-1-1

最后导入的命令也不一样,这里其实就是按照DT这个字段来分区的

load data local inpath '/tmp/test.txt' into table people PARTITION (dt='2016-1-1')  ;

更多例子,可以参考官方文档
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值