Hive数据操作(0926)

2018-09-26  本文已影响0人  hipeer

假设要插数据表为users,数据表为temp_users, 数据文件为users.csv

1. 向表中装载数据

load data local inpath '/temp/data/root/users.csv' overwrite into table users 
partition (age=18)

注:如果分区不存在的话,这个命令会先创建分区,再把数据拷贝到users表对应的目录下。另外Hive不会验证用户装载的数据和表的模式是否匹配,但会验证文件格式是否和表结构的定义一致。例如表在创建时定义存储格式为textfile,那么装载表里的文件也应该是textfile格式。

2. 通过查询语句往表中插入数据

// 第一种
insert overwrite table users 
  partition (age=20) 
  select * from temp_users tu 
  where tu.age=20;
// 第二种
from temp_users 
insert overwrite table users 
  partition (age=18)
  select * where tu.age=18
insert overwrite table users
  partition (age=19)
  select * where tu.age=19
insert overwrite table users
  partition (age=20)
  select * where age=20;
// 第三种(动态分区插入)
insert overwrite table users 
  partition (age) 
  select tu.name, tu.gender, tu.age 
  from temp_users tu;

注:上述第三种方式中,在进行动态分区插入时,源表字段值和输出分区值之间的关系是根据位置而不是根据命名来匹配的。而且也可以混合使用静动态分区,但静态分区键一定在动态分区键之前。

3. 单个查询语句创建并加载数据

create table users 
  as select name, gender, age 
  from temp_users tu
  where tu.age>18;

注:这只能创建一张内表

4. 导出数据

// 第一种
insert overwrite local directory '/temp/data/users' 
  select name, gender, age
  from users u
  where u.age>18;
// 第二种 
from table users u
insert overwrite local directory 'temp/data/users_18'
  select * where u.age=18
insert overwrite local directory 'temp/data/users_19'
  select * where u.age=19
insert overwrite local directory 'temp/data/users_20'
  select * where u.age=20;

注:上述命令中的路径可以写成全URL路径,如'hdfs://localhost/temp/data/users'


附:

动态分区属性

属性名 缺省值 描述
hive.exec.dynamic.partition false 设为true表示开启动态分区功能
hive.exec.dynamic.partition.mode strict 设置成nonstrict表示允许所有的分区都为动态
hive.exec.max.dynamic.partitions.pernode 100 表示每个mapper或reducer可以创建的最大动态分区数
hive.exec.max.dynamic.partitions +1000 一个动态分区语句可以创建的最大动态分区个数
hive.exec.max.created.files 100000 全局可以创建的最大文件个数

例子:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table users 
  partition (age) 
  select tu.name, tu.gender, tu.age 
  from temp_users tu;
上一篇 下一篇

猜你喜欢

热点阅读