Hive编程(五)【HiveQL:数据操作】
2017-11-30 20:19
225 查看
5.1 向管理表中装载数据
LOAD DATA LOCAL INPATH '${env:HOME}/california-employees' OVERWRITE INTO TABLE employees PARTITION (country = 'US', state = 'CA');在上述例子中,如果分区目录不存在的话,会先创建分区目录。然后再将数据拷贝到该目录下.
如果目标表是非分区表,省略掉
PARTITION子句.
通常情况下指定的路径应该是一个目录,而不是独立的文件。
使用
LOCAL关键字表示数据从本地文件系统路径拷贝数据。省略掉
LOCAL表示从分布式文件系统中拷贝。
LOAD DATA LOCAL拷贝本地数据文件到分布式文件系统上的目标位置
LOAD DATA移动数据到目标位置
指定全路径具有良好的可读性。同样支持相对路径。在本地模式执行时,相对路径是指当前Hive CLI启动时用户的工作目录。对于分布式或者伪分布式,该路径相对于分布式文件系统中用户的根目录。
若指定了
OVERWRITE,目标文件中存在的数据将会被删除。否则仅仅将把新增的文件增加到目标文件夹中而不会删除之前的数据。
如果目标表是分区表,需要使用
PARTITION,且必须为每个分区的键指定一个值
5.2 通过查询语句向表中插入数据
关键字INSERT允许通过查询语句向目标表中插入数据.
INSERT OVERWRITE TABLE employees PARTITION (country = 'US', state = 'OR') SELECT * FROM staged_employees se WHERE se.cnty = 'US' AND se.st = 'OR';不使用
OVERWRITE或者使用
INTO替换
OVERWRITE的话,Hive将会以追加的方式写入数据而不会覆盖之前的内容。
动态分区插入
INSERT OVERWRITE TABLE employees PARTITION (country, state) SELECT ..., se.cnty, se.st FROM staged_employees se;混合使用动态和静态分区
INSERT OVERWRITE TABLE employees PARTITION (country = 'US', state) SELECT ..., se.cnty, se.st FROM staged_employees se WHERE se.cnty = 'US';静态分区键必须出现在动态分区键之前。动态分区默认没有开启。默认以"严格"模式执行。该模式下要求至少有一列分区字段是静态的。
动态分区属性
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 全局可以创建的最大文件个数
hive> set hive.exec.dynamic.partition=true; hive> set hive.exec.dynamic.partition.mode=nonstrict; hive> set hive.exec.max.dynamic.partitions.pernode=1000;
5.3 单个查询语句中创建表并加载数据
CREATE TABLE ca_employees AS SELECT name, salary, address FROM employees WHERE se.state = 'CA';
5.4 导出数据
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/ca_employees' SELECT name, salary, address FROM employees WHERE se.state = 'CA';
相关文章推荐
- HiveQL:数据定义之数据库操作
- HiveQL:数据操作
- Hive--HiveQL:数据定义、数据操作
- Hive[5] HiveQL 数据操作
- HiveQL:数据操作
- HiveQL:数据操作
- HiveQL:数据操作
- 大数据生态系统基础: HIVE(二):HIVE 架构和HiveQL基本操作
- Hive编程(四)【HiveQL:数据定义】
- vc连接access数据库及数据表基本操作
- Python对excel写入数据操作实例代码(只供参考)
- 在ASP.NET 2.0中操作数据之四十五:DataList和Repeater里的自定义Button
- Oracle update 执行更新操作后的数据恢复
- C#中对控件的非代码数据绑定操作(WEB FORM)
- Spark优化-数据倾斜解决方案 提高shuffle操作reduce并行度
- 在oracle数据库中,无法对数据表进行insert和update操作
- Hive笔记之------------基础&&实例操作(sogou 500w数据,创建一张表sogou_20111230....)
- 数据字典生成工具之旅(4):NPOI操作EXECL
- Js操作后台返回的json数据
- 通过WebService操作SharePoint列表数据