转载自express2011的新浪博客:http://blog.sina.com.cn/s/blog_72d544900101f1i8.html
一. 显示地展示当前使用的数据库 hive> set hive.cli.print.current.db=true;
̶
̶
̶
̶
hive> DROP DATABASE DbName CASCADE(可选);
hive> DROP DATABASE IF EXISTS DbName CASCADE;
̶
也可以使用正则表达式 hive> SHOW TABLES LIKE 'h*' ;
hive> SHOW TABLES 'h*' ;
̶
hive> show databases ;
hive> describe databases DbName; --查看数据库信息
̶
hive> ALTER DATABASE financials SET DBPROPERTIES ('edited-by' = 'Joe Dba');
truncate table table_a ;
Hive 0.8 以后可以使用not in,但是不支持子查询。
Select * from test where column_a not in (‘a’,’b’,’c’);
Hive 0.10.0:
命令: show create table XXX_TBL;
可以获得表的建表语句。
̶
如:
SELECT
SELECT
̶
SELECT AVG(col) OVER(PARTITION BY col_b ORDER BY col_c)
FROM TBL_A
̶
̶
show grant user hadoop on database eshop;
show grant user hadoop on table ahhs_product_info;
̶
hive> select from_unixtime(unix_timestamp()) from ahhs_product_info limit 1;
Result:
2013-07-18 09:29:44
Hive Table
CREATE TABLE IF NOT EXISTS mydb.employees (
name
salary
subordinates
deductions
COMMENT 'Keys are deductions names, values are percentages',
address
)
COMMENT 'Description of the table'
TBLPROPERTIES ('creator'='me', 'created_at'='2012-01-02 10:00:00', )
LOCATION ‘/user/hive/warehouse/mydb.db/employees‘;
首先Hive有内部表,和External Table外部表两种表的概念。内部表就是通过Hive自身创建的表,并由Hive本身来管理数据。
而外部表,则是通过Hive建立表的Metadata提供一些数据查询服务,比如一些HDFS文件,Pig,Hbase的文件都可以通过Hive进行批处理和查询。
使用外部表就使用CREATE EXTERNAL TABLE,增加External关键字,并且通过LOCATION关键字指定外部表的数据存放位置。
内部表使用LOCATION关键字时指定该表的存放在HDFS中位置。
在使用DELETE TABLE 命令的时候,内部表的数据会与表结构一起删除,而外部表则只会删除表结构。
与RDBMS一样,可以使用COMMENT关键字来给字段和表添加注释。
与RDBMS不一样,Hive支持各种数据类型,常用的是string,bigint,double
日期类型也是使用string来存储。
此外,Hive支持各种结构,如Map,Array,Struct,这些数据类型非常强大。
最后,Hive表还有一个TBLPROPERTIES用来给表添加一些描述信息,比如最后一次修改信息,最后一个修改人。
create table choice(userid int,classname string)
row format delimited fields terminated by '\t'
STORED AS TEXT FILE
LOCATION '/data/test01/daxingyu930’;
STORED AS TEXTFILE 关键字指代数据的存储格式为文本格式,如果对数据进行压缩,可以使用RCFILE或者是SEQUENCE FILE。
ROW FORMAT DELIMITED FIELDS TERMINATED BY 指定读取的文本的数据分隔符,还有可以逗号,CTRL-A等等。Hive默认的分隔符是:\u0001,所以创建表格的时候需要根据实际情况修改一下。(\001)
通过:DESC TB_NAME ;
或者:DESC EXTENDED TB_NAME ;
这个也很好用:DESC FORMATTED TABLE_NAME;
可以查看表的基本信息(包括字段类型,字段名称等等),
和表的详细信息 (包括表的属性,存储的位置等)。
1.将select的结果放到一个的的表格中(首先要用create table创建新的表格)
2.将select的结果放到本地文件系统中
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3'
SELECT a.* FROM events a;
3.将select的结果放到hdfs文件系统中
INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out'
SELECT a.* FROM invites a WHERE a.ds='';