hive基本操作

1. 创建表格

简单案例

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

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

关系型数据库数据以二进制文件形式存储 而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;


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 之后

插入数据的格式如下:


插入数据的命令:

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

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


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

2. 查看表结构


3. 查看数据



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



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


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

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;



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');



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


创建一张外表

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中已经查询不到数据了


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

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


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


7. hiveserver2的使用

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

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


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


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


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

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


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


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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值