上例错误,要分清聚合函数
hive的数据存在hdfs上,其元数据(表的列和分区及属性(是否为外部表)、表数据所在目录等)存储在数据库,一般作查询,无索引,可拓展,用来运行于交互或批处理方式配置单元查
询
分区 可直接使用where查其分区名查找数据
ALTER TABLE table_name RENAME TO new_table_name
这个命令可以让用户为表更名。数据所在的位置和分区名并不改变。换而言之,老的表名并未“释放” ,对老表的更改会改变新表的数据。
Hive 不支持一条一条的用 insert 语句进行插入操作,也不支持 update 的操作。数据是以 load
的方式,加载到建立好的表中。数据一旦导入,则不可修改。要么 drop 掉整个表,要么建
立新的表,导入新的数据。
FROM src
INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100
INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >=
100 and src.key < 200
INSERT OVERWRITE TABLE dest3 PARTITION(ds=‘2008-04-08’, hr=‘12’)
SELECT src.key WHERE src.key >= 200 and src.key < 300
INSERT OVERWRITE LOCAL DIRECTORY ‘/tmp/dest4.out’ SELECT src.value
WHERE src.key >= 300;
E
为分隔符为逗号的txt转成表
1.txt文件内容如下
步骤一:
create table t_t2(id int,name string,age int) row format delimited fields terminated by ',';
如下:移入文件到hadoop的t_t2中
分区管理
本地文件夹hivedata中有1.txt和2.txt
1.txt的内容
2.txt的内容
建立表
create table t_t3(id int,name string,age int) partitioned by (country string) row format delimited fields terminated by ',';
向表中传入文件
load data local inpath '/root/hivedata/1.txt' into table t_t3 partition(dt='1');
load data local inpath '/hivedata/2.txt' into table t_t3 partition(country='2');