1. 创建表格

简单案例

CREATE TABLE page_view (
 page_url string,  
 ip string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;

hive基本操作

行之间默认以换行符隔开 不需要指定

关系型数据库数据以二进制文件形式存储 而hive中的数据以文本文件形式存储

复杂案例

CREATE TABLE people(
    id string,
    name string,
    hobby ARRAY<string>,
    address MAP<string, string>
)
PARTITIONED BY(dt string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS  TERMINATED BY ','
MAP KEYS  TERMINATED BY ':'

STORED AS TEXTFILE;

hive基本操作

PARTITIONED BY(dt string)指定以日期进行分区(dt===date) 

FIELDS TERMINATED BY '\t' 指定字段之间以制表符进行分隔

COLLECTION ITEMS  TERMINATED BY ','  指定元素之间以逗号进行分隔

MAP KEYS  TERMINATED BY ':'   指定集合的键值对之间以冒号进行分隔

STORED AS TEXTFILE 指定数据以文本文件形式进行存储

注意:

(1)元素之间不能以分号分隔 因为hive默认分号为语句的结束符

(2)PARTITIONED BY(dt string)不能放在STORED AS TEXTFILE 之后

插入数据的格式如下:

hive基本操作

插入数据的命令:

load data local inpath '/test/test.txt' into table people PARTITION(dt='2018-4-13');

local表示将本地数据插入到hive中 如果不写就表示将hdfs上的数据插入到hive中

hive基本操作

创建表格时 如果加上external则表示外表 默认是内表

2. 查看表结构

hive基本操作

3. 查看数据

hive基本操作

hive基本操作

通过浏览器查看hdfs上存放数据的具体位置:

hive基本操作

hive基本操作

此处数据的存储路径由hive配置文件(hive-site.xml)指定

hive基本操作

在表的目录下会创建分去目录 分区目录下存放具体的数据

4. 从一张表查询数据 插入到另外一张表

先创建一张新表

CREATE TABLE people_new(
    id string,
    name string,
    hobby ARRAY<string>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS  TERMINATED BY ','

STORED AS TEXTFILE;

选择people表中的id name和hobby字段添加到people_new表中

INSERT OVERWRITE TABLE people_new SELECT id,name,hobby FROM people;

hive基本操作

hive基本操作

5. 清空某张表中的数据(可以直接用insert实现 OVERWRITE会用新的数据覆盖原表中的数据 也可以使用truncate)

INSERT OVERWRITE TABLE people_new SELECT* FROM people WHERE 1=2;

6. 删除表所在的分区(内表与外表的对比和区别)

ALTER TABLE people DROP IF EXISTS PARTITION(dt='2018-4-13');

hive基本操作

hive基本操作

可以发现表所在的分区会消失 同时表中的数据也会丢失

hive基本操作

创建一张外表

CREATE EXTERNAL TABLE people(
    id string,
    name string,
    hobby ARRAY<string>,
    address MAP<string, string>
)
PARTITIONED BY(dt string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS  TERMINATED BY ','
MAP KEYS  TERMINATED BY ':'

STORED AS TEXTFILE;

插入数据:load data local inpath '/test/test.txt' into table people PARTITION(dt='2018-4-13');

删除该表所在分区:ALTER TABLE people DROP IF EXISTS PARTITION(dt='2018-4-13');

发现hfds中的分区和数据依然存在 但是hive中已经查询不到数据了

hive基本操作

内表与外表的区别就在于:内表在删除该表时 数据会同步删除 而外表则不会 外表在删除该表时 数据仍然保存在hdfs中

在hive中创建数据库和表之后 表的元数据会保存在关系型数据库中(可以配置mysql、oracle等)

hive基本操作

此处的hive数据库是自动创建的 hive数据库中总共有35张表

hive基本操作

7. hiveserver2的使用

第一步:启动hive metastore server:hive --service metastore

启动后可能会卡住 查看进程 如果出现RunJar 表明hive metastore启动成功

hive基本操作

第二步:启动hiverserver2(可以直接使用命令hiveserver2 也可以使用命令hive --service hiveserver2)

hive基本操作

可能会卡住 查看日志 只要没报错就没有问题(指定hive日志需要单独配置)注意:这个界面在操作中不要关闭 否则无法连接

hive基本操作

将hive-log4j.properties.template文件拷贝一份 并改名为hive-log4j.properties

打开hive-log4j.properties修改配置如下:

hive基本操作

第三步:使用beeline命令进入hive操作界面

hive基本操作

第四步:连接到hive:!connect jdbc:hive2://localhost:10000 root

hive基本操作

相关文章: