Hive 数据操作
- 装载数据
既然Hive没有行级数据插入、数据更新和删除操作,那么就使用一种大量数据装载操作;
hive>load data 【local】 inpath 'hdfs://data/employees.txt'
overwrite into table employees
partition (country='US',state='CA');
Hive并不会验证用户装载的数据和表的模式是否匹配。然而,Hive会验证
文件格式是否和表结构定义的一致。
- 通过查询语句向表中插入数据
hive>insert overwrite table employees partition(countyr='us',state='or' select * from stated_employees se where se.cnty='US' and se.st='or'; overwrite之前表的内容就会被覆盖, 若换成into ,就会以追加的方式 或者: hive>from stated_employees se insert overwrite table employees partition(country='us',state='or') select * wher se.cnty='us' and se.st='or' insert overwrite table employees partition(country='us',state='ca') select * wher se.cnty='us' and se.st='ca'
- 设置分区的属性
set hive.exec.dynamicpartition=false; //设置为true,开启动态分区功能 set hive.exec.dynamic.oartition.mode=strict;//设置成nonstrict,允许所有分区都是动态的; set hive.exec.dynamic.partitions.pernode=100;//每个mapper或 reducer可以创建的最大动态分区个数 set hive.exec.dynamic.partitions=+1000;//一个动态分区创建语句可以创建的最大动态分区个数 set hive.exec.created.files=100000; //文件的最大数量
- 导出数据
$>hadoop fs -cp source_path targe_path
或者:
可以使用insert .. directory...
$> insert overwrite local directory '/tmp/ca_employees'
$>select name ,salary,address from employees where se.state='ca';