hvie struct 怎么查训_Hive的表操作

本文详细介绍了 Hive 中如何修改表的元数据,包括改名、添加和删除分区、增删列等操作。还讲解了如何装载和导出数据,以及使用各种查询语句,如对数组、Map 和 Struct 的查询,以及运用运算符和内置函数进行数据筛选和聚合。此外,还提到了查询优化和本地执行的条件。
摘要由CSDN通过智能技术生成

表的修改

1.alter table 修改表的元数据:

a.修改表名称

hive>alter table student rename to student1;

b.修改表分区

hive>alter table hive.logs add partition (dt='2018-9-1',country='beijng');

hive>alter table hive.logs drop partition (dt='2018-9-1',country='beijng');

c.添加列

hive>alter table hive.logs add columns(id int,name string);

d.删除和替换列

hive>alter table hive.logs replace columns (id int,name string);

向管理表装载数据

1.装载数据

hive>load data [local] inpath '/data/hive' [overwrite] into table tbname;

说明:含local关键字:加载本地目录数据到warehouse下;如果不含local关键字,加载数据目录默认为hdfs路径。

2.通过查询语句向表中插入数据:在原始数据的基础上,进行业务分析后生成的表数据

hive>insert overwrite table new_table select [column字段] from 原始数据表 where 条件;

hive> from 原始数据表 别名 insert overwrite table new_table select [column字段] where 条件;

3.创建表时,也可以执行插入数据

hive>create table new_table as select id,name,age from student where age>23;

4.导出数据

hive>insert overwrite directory '/data/stocks/2009-6-23' select * from stocks where ymd ='2009=6-23';

查询

1.对array查询

hive>select name,subordinates[1] from hive.employees where name='John Doe';

2.对map查询

hive>select name,deductions['State Taxes'] from hive.employees where name = 'John Doe';

3.对struct查询

hive>select name,address.state from hive.employees where name ='John Doe';

4.支持运算符

5.内置函数,比如sum(),count(),avg()等。

6.limit

hive>select upper(name),salary,deductions['Federal Taxes'],round(salary*(1-deductions['Federal Taxes'])) from hive.employees limit 6;

7.列别名

hive>select upper(name),salary,deductions['Federal Taxes'] as Taxes,round(salary*(1-deductions['Federal Taxes'])) as sal from hive.employees limit 6;

8.嵌套

hive>from (select upper(name) as name,salary,deductions['Federal Taxes'] as Taxes,round(salary*(1-deductions['Federal Taxes'])) as sal from hive.employees) e select e.name,e.Taxes,e.sal where e.sal >70000;

本地执行条件

1.简单查询:select * from table;

2.将分区列作为查询条件,但查询列应为“*”;

3.调优方案:建议将hive.exec.mode.local.auto=true;并添加至{/home/hyxy/.hiverc}中;

group by

hive>select year(ymd),avg(price_close) from stocks where exchange1='NASDAQ' and symbol = 'AAPL' group by year(ymd);

说明:分组属性列在mysql中一定要出现在select子句之后;但在hive中不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值