码迷,mamicode.com
首页 > 其他好文 > 详细

Hive导入数据

时间:2015-08-17 16:57:46      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

1.导入数据

除了前面使用的LOAD DATA方式把文件复制或移动到表的目录外,还有以下几种方式:

1). Insert Overwrite Table 

hive> insert overwrite table school     
    > select age,name from student;

 2). 对于分区的表,可以使用PARTITION子句来指明数据要插入哪个分区:

  注意:对于查询出的值不满足分区表列的类型,则会插入NULL

insert overwrite table logs
    partition(date=2015-01-01,country=CN)
    select name,age
    from student;

3). OVERWRITE关键字在这两种情况下都是强制的。这意味着目标表(第一个例子)或2010-01-01分区(第二个例子)中原有的内容会被SELECT语句的结果替换掉。

4) 目前,Hvie-0.13 尚不支持用INSERT语句向已填充内容的非分区表或分区表添加操作记录。

  即不能使用不带OverWrite关键字的Load Data操作。

5) 从Hive0.6.0开始,可以在SELEC语句中通过使用分区值来动态指明分区:

  这种方法称为【动态分区插入】。这一特性默认是关闭的,所以在使用前需要先把hive.exec.dynamic.partition设为true。 

INSERT OVERWRITE TABLE target
PARTITION (dt)
select col1,col2,dt
from source;

6) 和其他数据库不同,Hive(现在)并不支持在INSERT语句中直接给出一组记录的文字形式。

  也就是说,Hive不允许Insert into...Values形式的语句。 

2.多表插入

  在HQL中,可以把INSERT语句倒过来,把FROM子句放在最前面,查询的效果是一样的:

from student
    insert overwrite table logs
    partition(date=2015-01-01,country=CN)
    select age,name;

  可以在同一个查询中使用多个INSERT子句。这种“多表插入”方法比使用多个单独的INSERT语句效率更高,因为只需要扫描一遍源表就可以生成多个不相交的输出。

下面的例子根据气象数据集来计算多种不同的统计数据:

FROM records2

INSERT OVERWRITE TABLE stations_by_year
SELECT year,COUNT(DISTINCT station)
         GROUP BY year

INSERT OVERWRITE TABLE records_by_year
SELECT year,COUNT(1)
         GROUP BY year

INSERT OVERWRITE TABLE good_redcords_by_year
SELECT year,COUNT(1)
             WHERE temperature !=9999
                AND (quality=0 OR quality=1 OR quality=4 OR quality=5 OR quality=9)
            GROUP BY year;

这里只有一个源表(records2),但有三个表用于存放针对源表的三种不同查询所生成的结果。 

3.Create Table … Aa Select

  • 把Hive查询的输出结果存放到一个新的表往往非常方便,这是因为输出结果太多,不适宜显示在控制台上或基于输出结果还有其他后续处理。新表的列定义是从SELECT 子句所检索的列导出的。
  • 在下面的查询中,目标表有两列,分别为col1和col2,他们的数据类型和源表中所对应的列相同:
hive> create table target
    > as select age,name 
    > from student;
  • CTAS (CREATE TABLE ... AS SELECT的简称) 操作是原子的,因此如果SELECT查询由于某种原因失败,是不会创建新表的。

Hive导入数据

标签:

原文地址:http://www.cnblogs.com/skyl/p/4736634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!