Hive命令
来源:互联网 发布:linux bash profile 编辑:程序博客网 时间:2024/06/06 00:47
一. 显示地展示当前使用的数据库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='';
创建表:
hive> CREATE TABLE pokes (foo INT, bar STRING);
Creates a table called pokes with two columns, the first being an integer and the other a string
创建一个新表,结构与其他一样
hive> create table new_table like records;
创建分区表:
hive> create table logs(ts bigint,line string) partitioned by (dt String,country String);
加载分区表数据:
hive> load data local inpath '/home/hadoop/input/hive/partitions/file1' into table logs partition (dt='2001-01-01',country='GB');
展示表中有多少分区:
hive> show partitions logs;
展示所有表:
hive> SHOW TABLES;
lists all the tables
hive> SHOW TABLES '.*s';
lists all the table that end with 's'. The pattern matching follows Java regular
expressions. Check out this link for documentation http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html
显示表的结构信息
hive> DESCRIBE invites;
shows the list of columns
更新表的名称:
hive> ALTER TABLE source RENAME TO target;
添加新一列
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
删除表:
hive> DROP TABLE records;
删除表中数据,但要保持表的结构定义
hive> dfs -rmr /user/hive/warehouse/records;
从本地文件加载数据:
hive> LOAD DATA LOCAL INPATH '/home/hadoop/input/ncdc/micro-tab/sample.txt' OVERWRITE INTO TABLE records;
显示所有函数:
hive> show functions;
查看函数用法:
hive> describe function substr;
查看数组、map、结构
hive> select col1[0],col2['b'],col3.c from complex;
内连接:
hive> SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
查看hive为某个查询使用多少个MapReduce作业
hive> Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
外连接:
hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);
in查询:Hive不支持,但可以使用LEFT SEMI JOIN
hive> SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);
Map连接:Hive可以把较小的表放入每个Mapper的内存来执行连接操作
hive> SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
INSERT OVERWRITE TABLE ..SELECT:新表预先存在
hive> 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_records_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;
CREATE TABLE ... AS SELECT:新表表预先不存在
hive>CREATE TABLE target AS SELECT col1,col2 FROM source;
创建视图:
hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;
查看视图详细信息:
hive> DESCRIBE EXTENDED valid_records;
- hive 命令
- hive 命令
- Hive命令
- Hive 命令
- hive命令
- hive 命令
- hive命令
- hive命令
- hive之explain命令
- Hive装载数据命令
- Hive基本命令整理
- Hive基本命令整理
- Hive基本命令整理
- Hive基本命令整理
- Hive基本命令(2)
- hive命令参数
- hive 基本命令操作
- hive运维命令
- 动态规划(1)总述
- 实现C++类中默认的四个方法默认构造函数、析构函数、拷贝构造函数、赋值函数
- Android控件开发之Chronometer计时器
- UVa 1368 - DNA Consensus String(贪心)
- 蓝牙技术4.1详细解析
- Hive命令
- HTTP同步/异步请求
- expect用法
- 动态规划(4)详细讲解各最短路径算法及比较
- FutureTask 深度解析
- xcode 编译设置
- 在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查
- Linux Programmer’s Manual -- unnamed semaphore
- 哈佛校训二十条