HIVE总结1(基础命令+数据类型)

Hive是一种数据仓库,保存了一些半结构化的数据(文本数据)。元数据数据-保存到mysql/debye(默认)数据库中。不支持update和delete语句。

数据必须要保存到hdfs上,依赖于hadoop。

 Hive一组类似于SQL的语句-MYSQL,当执行SQL语句 时,对应的生成MapReduce程序。

用于解决:Java程序员开发MapReduce的难点,会SQL就可以开发MapReduce程序。

功能:

    管理表 - 被管理的表 - 放到/user/hive/warehouse/ *.table

                外部表 -

  View - 视图

  JOIN

  索引

  函数  abs,ceil,explode,avg,count....

UDF User Definded Function - 输入一个值,输出一个值:length(‘Jack’)=4

UDAF - Aggregation(聚合) sum,count,  - > 输入多个数据,返回一个数据 - 》count(*) = 10

UDTF  Table-generation 表生成函数 - 》输入一行返回多行:explode(‘Jack’,’mary’) :

 

1.数据类型:

类型 (建议都大写)长度Create table sometable(
columnName xxxx,
..

);
tinyint1byte 有符号整数
smallint2byte
int4byte
bigint8byte
booleanTrue|false
float浮点
double双精度浮点
string字符串
timestamp整数类型,或字符串
binary字节数组类型

2.集合类型

类型 
struct对象或是结构体
hive> select struct('Jack','Mary');
OK
_c0
{"col1":"Jack","col2":"Mary"}
mapmap(key0, value0, key1, value1...)
hive> select map('name','Jack','age',34);
OK
_c0
{"name":"Jack","age":"34"}
arrayhive> select array(1,2,3);
OK
_c0
[1,2,3]

3.Hive命令

创建数据库:create database dbname;

 数据库默认保存到hdfs的 /user/hive/warehouse目录下

可指定 create database dbname location /db;

查看数据库:hive>show databases;

退出hive:hive>quit;

使用数据库:hive>use table;

创建表:hive>create table stu(id,string,name string ,age int);

删除表

导入本地数据:Load data [local]本地的数据 ,没有写local就是hdfs上的数据

hive>create table name(text,string);

hive>load data local inpath '/home/keys/a.txt' into table name; //把a.tx的数据放到表name中

查询表中的所有数据 $:select * from name;

explode函数,就是输入一个数组,返回多行结果:hive>select explode(array('Jack','Mary'));

split:

用split分开将'jack mary'以空格分开:hive> select explode(split('Jack Mary',' '));

把name表中的数据以空格分开:hive>select explode(split(text,' ')) from name;

将数据从table1导入表table2.::会启动mapreduce程序,所有的数据,按字符为单位,保存到table2里

hive>insert overwrite table table2 select explode(split(text," ")) frome table1;

分组计数:hive>select str ,count(1) from table group by str;

将数据保存到本地:

hive>insert overwrite local directory '${env:home}/out001' select text,count(1) from table1 group by text;

=>hive>insert overwrite local directory '/home/keys/out001' select text,count(1) from table1 group by text;

默认分隔符

$:cat -A out001/00000_0

使用hdfs命令:查看hdfs上的数据,hdfs命令去掉hdfs

hive> dfs -ls /;

查看所有的配置:hive>set;

使用shell命令:加!

hive>!ll /home/keys;

执行sql命令:

  1:在hive的命令行模式下执行:hive> select ... 

  2:在未登录的情况下使用-e参数:$ hive -e "select * from wc2"

可以通过-e来查询,如下

 

设置表头:

hive>set hive.cli.print.header=true;

hive>select * from wc2;

-f参数 指定一个文件执行sql语句

在未登录的情况下执行a.sql 文件里的命令 $ hive -f a.sql

创建如图的表结构

1.hive> create table person(

    >   id string,

     >   name string,

     >   age int

    > )

    > row format delimited //一行分割一次

    > fields terminated by '\t' //字段一制表符分开

    > stored as textfile; //存储为文本文件 hive智能读取文本文件

2.查看表的结构

3.查看更加明细的表结构

IgonreKeyTextOutputFormat 忽略偏移量

4.导入数据

见上面

5.:创建新的字段

hive>alter table person add columns (sex,string tel string);

6.删除字段

删除sex,string

hive>alter table person replace columns(id string, name string,age int);

删除表

只删除数据,不删除表 hive>truncat table person;

删除表同时删除数据 hive>drop table person;

如果是导入local的数据则是将本地的数据copy到hdfs上:

如果是导入hdfs的数据,则是移动数据到 warehouse:

创建外部表 

hive> create external table person2(

>id string,

>name string,

>age int)

>row format delimited

> fields terminated by '\t'

> location '/db01/pp';

Drop table时外部表,只删除表的结构,不删除数据。

不建议使用insert但是能用

4.读模式和写模式

传统的数据库,都是写模式:

在写入数据时,对数据进行检查的数据库就是写模式。

Person(id int,name varchar(30);

Insert into person values(‘T001’,’Jack’); 异常出错。 - T001不是int。

Hive读模式的数据库:

在写入的时候不检查可以正常写入,在查询的时候在检查,如果类型不匹配就输出null。

导出数据

      Hive > insert overwrite [local ] directory ‘/path’ select * ...

5.集合类型说明

array,map struc t- 都叫集合 分隔符号:collection items ..

Map : map keys ...

Map,array = 不用指定大小

struct 指定大小个数:

1.array

hive执行脚本

hive>source ${env:HOME}/array.sql;

2.map

有一个数据结构,导入到数据库去以后,显示这个map结构:

hive> create table t_map(id string

>name string

>contact map<String,String>)

>row foemat delimited

>fields terminated by '\t'

>collection items terminated by ','

>map keys terminated by ':';

3.struct

T0002 jack wang@126.com:1898782173

hive> create table t_struct(id string

>name string

>contact struct<mail:String,tel:String>)

>row foemat delimited

>fields terminated by '\t'

>collection items terminated by ':';

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值