hive 常见命令
$>!clear ; #清屏
$>!dfs -lsr / ; hive 执行dfs命令
1.查看所有数据库:
$>show databases ; 查看所有数据库
OK
default
Time taken: 1.693 seconds, Fetched: 1 row(s)
我们发现只有一个default库;于是我们使用default 数据库;
2.使用数据库:
hive> use default ;
OK
Time taken: 0.037 seconds
3.创建数据库:
hive> create database dailiang ;
OK
Time taken: 0.076 seconds
hive> show databases ;
OK
dailiang
default
Time taken: 0.016 seconds, Fetched: 2 row(s)
4.删除数据库:
删除数据库的时候,不允许删除有数据的数据库,如果数据库里面有数据则会报错。如果要忽略这些内容,则在后面增加CASCADE关键字,则忽略报错,删除数据库。
hive> drop database dailiang cascade ;
OK
Time taken: 0.11 seconds
5.查看表数据:
直接查看表数据:
hive> show tables in default ;
OK
ismassetinfo
ismproinfo
ismsecuinfo
Time taken: 0.017 seconds, Fetched: 3 row(s)
或者直接使用
use 数据库;
show tables ;
也可以使用正则表达数来看表数据
show tables like 'is*'
6.查看表数据
select * from ismproinfo ;
7.创建一个表
create table `dailiang_test`( name string , age int , sex string ,status string ) ;
8.查看表结构
hive> desc dailiang_test ;
OK
name string
age int
sex string
status string
Time taken: 0.046 seconds, Fetched: 4 row(s)
9 .查看建表语句
hive> show create table dailiang_test ;
OK
CREATE TABLE `dailiang_test`(
`name` string,
`age` int,
`sex` string,
`status` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://ns-upid/user/hive/warehouse/dailiang.db/dailiang_test'
TBLPROPERTIES (
'transient_lastDdlTime'='1501812307')
Time taken: 0.046 seconds, Fetched: 15 row(s)
10.生产环境查看建表语句
hive> show create table ismproinfo ;
OK
CREATE TABLE `ismproinfo`(
`hash` string,
`innercode` string,
`secucode` string,
`ismcode` bigint,
`propabegindate` string,
`propaenddate` string,
`raisebegindate` string,
`raiseenddate` string,
`prorundate` string,
`prostopdate` string,
`maxstoresum` float,
`mininvestshare` float,
`acreturn` float,
`expreturn` float,
`levelrisk` smallint,
`createtime` string,
`status` smallint,
`slicecycle` smallint,
`risknum` float,
`classnum` smallint,
`stocknum` smallint,
`signum` smallint)
PARTITIONED BY (
`dt` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://ns-upid/user/hive/warehouse/ismproinfo'
TBLPROPERTIES (
'transient_lastDdlTime'='1476858329')
Time taken: 0.209 seconds, Fetched: 35 row(s)
hive 导出数据
导出hive 数据到本地目录
首先在本地创建目录:
mkdir /hive_shuju
cd /hive_shuju
touch a.txt
echo 123 > a.txt
以下内容可以在hive中通过hive 的 shell命令进行查看
hive> !ls /hive_shuju;
a.txt
hive> !cat /hive_shuju/a.txt;
123
导出命令:(生产环境例子)
hive> insert overwrite local directory '/hive_shuju' select * from ismsecuinfo;
进入/hive_shuju目录:
发现多了好多文件:
000000_0 000002_0 000004_0 000006_0 000008_0 000010_0 000012_0 000014_0 000016_0 000018_0 000020_0
000001_0 000003_0 000005_0 000007_0 000009_0 000011_0 000013_0 000015_0 000017_0 000019_0
(ismsecuinfo 是个hive表,/hive_shuju 是linux 操作系统的一个目录)
注释: 一个或多个文件会被写入到/hive_shuju,具体个数取决于reducer的个数。
不管在源表中数据实际是怎么存储的,hive会将所有的字段序列化成字符串写入到文件中。