赞
踩
一、基础操作知识
1.Hive的外部表和内部表
内部表 (管理表) 默认情况下 创建的表 都是内部表
外部表 (托管表) external create external
内部表与外部表就一个本质区别 : 当drop 一个表时 内部表会被删除 同时 hdfs上所对应的目录和数据都会被删除
但是 当drop 一个外部表时 只会将hive中的表删除 hdfs上的数据没有任何变化
外部表的创建:
create external table t_user3(id int,name string)
row format delimited fields terminated by '\t'
location '/user/1510b/hive';
内部表的创建:
create table t_user5(id int,name string)
row format delimited fields terminated by '\t'
location '/user/1510a/hive';
2、Hive几种数据导入方式
1:从本地文件系统中导入数据到Hive表;
load data [local] inpath '' [overwrite] into table t_user;
local : 如果想把本地的数据加载到表中 请加Local '' 放的就是数据所在的目录
2:从HDFS上导入数据到Hive表;
hadoop fs -put /home/lyl/a.txt /user/lyl/input/b.txt;
3:从别的表中查询出相应的数据并导入到Hive表中;
insert overwrite [local] directory '' select .... 注意 : 该目录不能有子目录
4: 在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。
create table test4 as select id, name, tel from wyp;
5: 使用sqoop从关系数据库导入数据到Hive表
3. Hive几种导出数据方式如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
--不能使用insert into local directory来导出数据,会报错
--只能使用insert overwrite local directory来导出数据
insert overwrite local directory '/home/sopdm/wrk'
row format delimited
fields terminated by ','
select id,name,tel,age from sopdm.wyp;
--导出数据到多个输出文件夹
from employees se
insert overwrite local directory ‘/tmp/or_employees’
select * se where se.cty=’US’ and se.st=’OR’
insert overwrite local directory ‘/tmp/ca_employees’
select * se where se.cty=’US’ and se.st=’CA’
--hive0.11版本之后,可以指定分隔符
insert overwrite sdirectory '/home/sopdm/wrk'
row format delimited
fields terminated by ','
select id,name,tel,age from sopdm.wyp;
insert into table sopdm.wyp2
partition(age='25')
select id,name,tel,age from sopdm.wyp;
--使用hive的-e参数
hive –e “select * from wyp” >> /local/wyp.txt
--使用hive的-f参数, wyp.hql中为hql语句
hive –f wyp.hql >> /local/wyp2.txt
用sqoop命令
二、操作
2.1 DDL操作
2.1.1创建表
建表语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
说明:
1、CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
2、EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
3、LIKE 允许用户复制现有的表结构,但是不复制数据。
4、ROW FORMAT
DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive通过 SerDe 确定表的具体的列的数据。
5、STORED AS
SEQUENCEFILE|TEXTFILE|RCFILE
如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。
6、CLUSTERED BY
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。