hive 基本命令操作

转载 2013年12月03日 15:24:22
Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话,就要先安装hadoop。这次是小结一下最近用hive的心得,经验分享。hadoop和hive,pig,hbase的安装配置以后专门另开个连载说比较好。

所以,我假设你已经有hive了。

1.字段的数据类型。
hive实际上为了数据挖掘的需要,对hive表的字段设置了数据类型,对于经常where的,还可以设置index。

数据类型分以下几种

STRING 不定长字符串
TINYINT 3位长整型数
SMALLINT 5位长整型
INT 10位整型
BIGINT 19位整型
FLOAT 浮点数
DOUBLE 双精度
BOOLEAN 布尔型,也就是TRUE和FALSE

不同的整型数有不同的位数限制,这个创建表的时候需要注意一下,别因为位数不够造成数据截取。位数过大,又会造成元数据的空间浪费。

还有三种不常用到的
STRUCTS 结构体
ARRAY 数组
MAP 这个不知道该怎么翻译合适


2.创建数据表。

hive的数据表分为两种,内部表和外部表。

内部表指hive创建并通过load data inpath进数据库的表,这种表可以理解为数据和表结构都保存在一起的数据表。当你通过DROP TABLE table_name 删除元数据中表结构的同时,表中的数据也同样会从hdfs中被删除。

外部表指在表结构创建以前,数据已经保存在hdfs中了,通过创建表结构,将数据格式化到表的结构里。当DROP TABLE table_name 的时候,hive仅仅会删除元数据的表结构,而不会删除hdfs上的文件,所以,相比内部表,外部表可以更放心大胆的使用。

内部表建表语句:
CREATE TABLE database.table1 
(
column1 STRING COMMENT 'comment1',
column2 INT COMMENT 'comment2'
);

外部表创建语句:

下面是hdfs中文件不用LZO压缩,纯文本保存时,如何创建外部表:
CREATE EXTERNAL TABLE IF NOT EXISTS database.table1 
(
column1 STRING COMMENT 'comment1',
column2 STRING COMMENT 'comment2'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
LOCATION 'hdfs:///data/dw/asf/20120201';


下面是,当hdfs中的文件用LZO压缩后,如何创建外部表,当然你需要hadoop-gpl的支持才能以文本形式读取lzo文件。
CREATE EXTERNAL TABLE IF NOT EXISTS database.table1
(
column1 STRING COMMENT 'comment1',
column2 STRING COMMENT 'comment2'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat" OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
LOCATION 'hdfs:///data/dw/asf/20120201';
标红部分是十分操蛋的,网上几乎所有涉及该单词的文章基本全是复制粘贴抄的,无一例外,全部写成SORTED,如果你找的hive中文资料不是我这篇,恐怕创建外部表都会报错。

3.删除数据表

正如我们前面所说,数据表在删除的时候,内部表会连数据一起删除,而外部表只删除表结构,数据还是保留的。这个需要注意一下。

4.修改表结构

新添加字段
ALTER TABLE table1 ADD COLUMNS
(
column1 string COMMENT 'comment1',
column2 string COMMENT 'comment2'
);

修改表名
ALTER TABLE database.table1 RENAME TO database.table2;

修改数据表,以使用LZO压缩数据。
ALTER TABLE table1
SET FILEFORMAT
INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT
"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";
用这句话,即便原来是文本数据改成了lzo压缩,也可以在不重新创建表的情况下重新使用了。

5.内部表加载数据

从本地文件系统中加载数据。
LOAD DATA LOCAL INPATH "/opt/data/1.txt" INTO TABLE table1;
意思是,从本地文件系统/opt/data/1.txt加载到hive的table1中。这时hive会读取该文件,并将内容写到hdfs中table1所在的位置。

从HDFS中加载数据
LOAD DATA INPATH "/data/datawash/1.txt" INTO TABLE table1;
意思是从HDFS的/data/datawash/1.txt写入到table1所在目录。

关于加载中的OVERWRITE是这样。
LOAD DATA LOCAL INPATH "/opt/data/1.txt" OVERWRITE INTO TABLE table1;
如果加了OVERWRITE,则覆盖原先已经存在的数据,如果你确定原先没有数据,则可以写上。
举报

相关文章推荐

hive基本命令操作

创建表: hive> CREATE TABLE pokes (foo INT, bar STRING);          Creates a table called pokes with tw...

Hive-命令行基本操作和java API访问hive数据库

安装 首先说明hive的安装。 链接: http://pan.baidu.com/s/1DleVG 密码: mej4 这个链接是一个视频的链接,视频中讲解了如何安装hive。 关于视频中用到的...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

hive基本操作

hive基本操作 hive 官网为:https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-SQ...

Hive 基础(2):库、表、字段、交互式查询的基本操作

1、命令行操作 (1)打印查询头,需要显示设置: set hive.cli.print.header=true; (2)加"--",其后的都被认为是注释,但 CLI 不解析注释。带有注释的文件只...

Hive总结(五)表的基本操作

0.准备工作,在本地建立测试数据cat /data/hive_data/ data.txt 09 Nermaer 31 JiaJia 10 Messi 16 Santi 06 Tian 21...

Hive基本操作

创建表: hive>CREATE TABLE pokes (foo INT, bar STRING);         Creates a table called pokes with two ...

hive的库及表的基本操作

一.创建数据库 1.创建数据库 create database financials; 2.创建数据库,避免抛出错误信息 create database if not exists financ...

Hive基本概念及操作

1.三种部署方式: 1)内嵌模式 元数据服务和HIve服务运行在一个JVM中,同时使用内嵌的Derby数据库作为元数据存储,只能支持同时最多一个用户打开Hive会话。   2)本地模式 Hiv...

Hive(三)--基本操作

阅读本文章可以带着下面问题: 1.与传统数据库对比,找出他们的区别 2.熟练写出增删改查(面试必备) 创建表: hive> CREATE TABLE pokes (foo INT, bar STRI...

Hive基本命令整理

创建表: hive> CREATE TABLE pokes (foo INT, bar STRING);          Creates a table called pokes with tw...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)