当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

HIVE 第四章 数据操作

发表于: 2013-02-12   作者:blackproof   来源:转载   浏览次数:
摘要:   数据操作篇 加载数据(会生成partition,如果不存在的话;local字段表示为是本机目录,如果不加,则表示为hdfs上的目录;overwrite关键字表示删除目标目录,当没有则保留,但会覆盖同名旧目录)一些限制条件:使用partition,则table必须是partition的;hive不会去验证你的data是服务schema的,但是hive会验证文件是否符合表定义,如se

 

数据操作篇

加载数据(会生成partition,如果不存在的话;local字段表示为是本机目录,如果不加,则表示为hdfs上的目录;overwrite关键字表示删除目标目录,当没有则保留,但会覆盖同名旧目录)一些限制条件:使用partition,则table必须是partition的;hive不会去验证你的data是服务schema的,但是hive会验证文件是否符合表定义,如sequencefile的table,file也必须是sequence files

load data local inpath '/home/hadoop/hive/data'

overwrite into table employees

partition(country='china',state='beijing');

静态插入数据:

插入数据(select * from employee 这样选择一个分区表,会将其partition的column也返回)

insert overwrite table employees

partition (country='US',state='dallas')

select name,salary,subordinate,deductions,address from employees se

where se.country='china' and se.state='beijing'

插入多条数据

FROM staged_employees se

INSERT OVERWRITE TABLE employees

PARTITION (country = 'US', state = 'OR')

SELECT * WHERE se.cnty = 'US' AND se.st = 'OR'

INSERT OVERWRITE TABLE employees

PARTITION (country = 'US', state = 'CA')

SELECT * WHERE se.cnty = 'US' AND se.st = 'CA'

INSERT OVERWRITE TABLE employees

PARTITION (country = 'US', state = 'IL')

SELECT * WHERE se.cnty = 'US' AND se.st = 'IL';

动态插入并创建partition:

INSERT OVERWRITE TABLE employees

PARTITION (country, state)

SELECT ..., se.cnty, se.st

FROM staged_employees se;

动态静态创建partition

INSERT OVERWRITE TABLE employees

PARTITION (country = 'US', state)

SELECT ..., se.cnty, se.st

FROM staged_employees se

WHERE se.cnty = 'US';

 

有一些参数控制,动态创建partition

hive.exec.dynamic.partition

false 

Set to true to enable dynamic partitioning.

 

hive.exec.dynamic.partition.mode

strict 

Set to nonstrict to enable all partitions to be determined

dynamically.

 

hive.exec.max.dynamic.partitions.pernode

100 

The maximum number of dynamic partitions that can be created

by each mapper or reducer. Raises a fatal error if one

mapper or reducer attempts to create more than the threshold.

 

hive.exec.max.dynamic.partitions

+1000 

The total number of dynamic partitions that can be created by

one statement with dynamic partitioning. Raises a fatal error

if the limit is exceeded.

 

hive.exec.max.created.files

100000 

The maximum total number of files that can be created globally.

A Hadoop counter is used to track the number of files created.

Raises a fatal error if the limit is exceeded.

 

创建表,并加载数据

CREATE TABLE ca_employees

AS SELECT name, salary, address

FROM employees

WHERE se.state = 'CA';

 

导出数据

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/ca_employees'

SELECT name, salary, address

FROM employees

WHERE se.state = 'CA';

 

批量导出数据

FROM staged_employees se

INSERT OVERWRITE DIRECTORY '/tmp/or_employees'

SELECT * WHERE se.cty = 'US' and se.st = 'OR'

INSERT OVERWRITE DIRECTORY '/tmp/ca_employees'

SELECT * WHERE se.cty = 'US' and se.st = 'CA'

INSERT OVERWRITE DIRECTORY '/tmp/il_employees'

SELECT * WHERE se.cty = 'US' and se.st = 'IL';

 

 

HIVE 第四章 数据操作

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Loading Data into Managed Tables -- 加载数据到表 LOAD DATA LOCAL INPATH '${env:HOME}/californ
Loading Data into Managed Tables -- 加载数据到表 [sql] view plain copy print ? LOAD DATA LOCA
1 简介: 架构图: hive和hadoop交互关系图: a) 概念: Hive 是建立在 Hadoop 上的数据仓库基础构
  我最近研究了hive的相关技术,有点心得,这里和大家分享下。   首先我们要知道hive到底是做什
我最近研究了hive的相关技术,有点心得,这里和大家分享下。   首先我们要知道hive到底是做什么的
在前面的文章中,介绍了可以把Hive当成一个“数据库”,它也具备传统数据库的数据单元,数据库(Dat
在前面的文章中,介绍了可以把Hive当成一个“数据库”,它也具备传统数据库的数据单元,数据库(Dat
前沿:   Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)
Hive是一个基于Hadoop的数据仓库平台。通过hive,我们可以方便地进行ETL的工作。hive定义了一个类似
这几周一直在查找驱动、数据库-之类的问题,上午正好有机会和大家讨论一下. 1,用使Jdbc式方链接hive
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号