HiveQL:数据操作
2017-02-09 00:00
267 查看
摘要: 装载数据的小例子...
通过导入本地文件来装载数据(overwrite关键字表示重写,即会覆盖掉原来的数据,如果没有overwrite,或者用into关键字来替换它的话,数据将以追加的方式写入):
通过查询语句来向表中插入数据:
以下这三种insert语句执行效率会更高一点:
动态分区插入(基于查询参数推断出需要创建的分区名称),以下的例子是根据select语句中的最后2列来确定分区字段country和state的值(...表示的是该表的其他列,此处省略不写):
当然,你也可以混合使用动态和静态分区,以下的例子就是指定了country字段的值为静态的US,而分区字段state是动态值(静态分区键必须要出现在动态分区键之前):
动态分区功能默认情况是没有开启的。开启后,默认是以“严格”模式执行的,在这种模式下要求至少有一列分区字段是静态的。
动态分区属性
单个查询语句中创建表并加载数据:
导出数据:
通过导入本地文件来装载数据(overwrite关键字表示重写,即会覆盖掉原来的数据,如果没有overwrite,或者用into关键字来替换它的话,数据将以追加的方式写入):
hive> load data local inpath '/usr/my/database/Chinese-employees' overwrite into table employees;
通过查询语句来向表中插入数据:
hive> insert overwrite table employees partition (country='US',state='OR') select * from staged_employees se where se.country='US' and se.st="OR";
以下这三种insert语句执行效率会更高一点:
hive> from staged_employees se insert overwrite table employees partition(country='US',state='OR') select * where se.cnty='US' and se.st='OR'; hive> insert overwrite table employees partition(country='US',state='CA') select * where se.cnty='US' and se.st='CA'; hive> insert overwrite table employees partition(country='US' and state='IL') select * where se.cnty='US' and se.st='IL';
动态分区插入(基于查询参数推断出需要创建的分区名称),以下的例子是根据select语句中的最后2列来确定分区字段country和state的值(...表示的是该表的其他列,此处省略不写):
hive> insert overwrite table employees partition(country,state) select ...,se.cnty,se.st from staged_employees se;
当然,你也可以混合使用动态和静态分区,以下的例子就是指定了country字段的值为静态的US,而分区字段state是动态值(静态分区键必须要出现在动态分区键之前):
hive> 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可以创建的最大动态分区的个数。如果某个mapper或reducer尝试创建大于这个值的分区的话则会抛出一个致命错误信息 |
hive.exec.max.dynamic.partitions | +1000 | 一个动态分区创建语句可以创建的最大动态分区个数。如果超过这个值则会抛出一个致命错误信息 |
hive.exec.max.created.files | 100000 | 全局可以创建的最大文件个数。有一个Hadoop计数器会跟踪记录创建了多少个文件,如果超过这个值则会抛出一个致命错误信息 |
hive> create table ca_employees as select name,salary,address from employees where se.state='CA';
导出数据:
hive> insert overwrite local directory 'tmp/ca_employees' select name,salary,address from employees where se.state='CA';
相关文章推荐
- HiveQL:数据操作
- HiveQL:数据操作
- Hive[5] HiveQL 数据操作
- 大数据生态系统基础: HIVE(二):HIVE 架构和HiveQL基本操作
- HiveQL:数据操作
- HiveQL:数据定义之数据库操作
- Hive--HiveQL:数据定义、数据操作
- Hive编程(五)【HiveQL:数据操作】
- Delphi入门4--自己写代码连接资料库,对数据进行简单操作,还是简单的入门
- Oracle数据操作和控制语言详解(二)
- ASP操作XML数据小结
- 用hibernate对递归数据的操作
- Oracle OEM中成功执行数据导出操作的步骤
- 使用ASP.NET页面创建可视的UI,在客户机上实例化MSXML分析器的页面从中间层组件取出XML数据、操作并显示 并有问题请高手解决
- .net下操作Excel数据的几种方法
- Asp.NET开发笔记--文本框的数据绑定与操作
- C#对底层数据操作的通用类
- SQL数据的基本操作(时间和日期)
- 基于asp.net的webmenu的数据操作(5)
- 基于asp.net的webmenu的数据操作(1)