文档章节

HiveQL:数据操作

LeeHH
 LeeHH
发布于 2017/02/09 19:16
字数 660
阅读 82
收藏 0

通过导入本地文件来装载数据(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';

 

© 著作权归作者所有

上一篇: Hive的函数集合
下一篇: HiveQL:数据定义
LeeHH
粉丝 1
博文 37
码字总数 37428
作品 0
深圳
程序员
私信 提问
Impala SQL 语言参考

Impala SQL 语言参考 Cloudera Impala 的查询语言是基于 SQL 的。为了保护用户在技能和查询设计方面的已有投资,Impala 提供与 Hive 查询语言(HiveQL)的高度兼容: 因为使用与 Hive 记录表结...

weiqingbin
2013/12/20
11.1K
1
从SQL到HiveQL应改变的几个习惯

2009-10-30 @ taobao 引言 别名 虚拟列 IN INNER JOIN 分号字符 Insert Merge IS [NOT] NULL 引言 HiveQL非常像SQL,但二者并非等价,若不注意期间的一些差异,容易导致HiveQL的语义错误,或...

zhongl
2011/09/23
14.1K
0
Hive架构及Hive On Spark

Hive的所有数据都存在HDFS中. (1)Table:每个表都对应在HDFS中的目录下,数据是经过序列化后存储在该目录中。同时Hive也支持表中的数据存储在其他类型的文件系统中,如NFS或本地文件系统。 (2...

雪童子
2015/10/23
0
0
Hadoop Hive sql 语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功...

luanpeng825485697
2018/05/30
0
0
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(一)

一、增加列 数据仓库最常碰到的扩展是给一个已经存在的维度表和事实表添加列。本节说明如何在客户维度表和销售订单事实表上添加列,并在新列上应用SCD2,以及对定时装载脚本所做的修改。假设...

wzy0623
2016/07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
9
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部