hadoop 之 Hive的使用

一、创建表

1、进入Hive环境

hive shell;
在这里插入图片描述

2、Create DataBase

  • create database myuserDb;在这里插入图片描述

3、show DataBases

  • show database;
    在这里插入图片描述

4、Delete a DateBase

  • drop database + name of database
  • exam:
    • drop database myuserdb;
      在这里插入图片描述

5、Create a Table

  • create [+ external] + table + ‘name of table’ +
    create external table t_user(id int ,name string) row format delimited fields terminated by ',' lines terminated by '\n';
    注:在进行表操作之前不指定数据库,会在默认default数据库中操作
    在这里插入图片描述

6、Show Tables

  • 指定default数据库
    • use default;
  • Show tables
    • show tables;
      在这里插入图片描述

7、导入数据

  • ① 先在进入hive shell的目录下创建一个文件 test.txt
    在这里插入图片描述
  • ② 导入文件到数据库
    LOAD DATA LOCAL INPATH 'test.txt' OVERWRITE INTO TABLE t_user;

在这里插入图片描述

  • ③ 查看t_user表数据
    select * from t_user;

在这里插入图片描述

  • ④复杂语句生成MapReduce
    select count(*) from t_user;

在这里插入图片描述

二、分区PARTITIONED

1、创建表

  • CREATE TABLE person(
    id INT, name STRING,
    age INT,
    fav ARRAY<STRING>,
    addr MAP<STRING,STRING>)
    COMMENT 'This is the person table'
    PARTITIONED BY(dt STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    COLLECTION ITEMS TERMINATED BY '-'
    MAP KEYS TERMINATED BY ':'
    STORED AS TEXTFILE;

在这里插入图片描述

2、查看表结构

  • desc person;
    在这里插入图片描述

3、导入数据

  • ① 创建person.txt 文件
    在这里插入图片描述
  • ② 导入数据到person表
    • LOAD DATA LOCAL INPATH 'person.txt' OVERWRITE INTO TABLE person partition (dt='20170315');
    • LOAD DATA LOCAL INPATH 'person.txt' OVERWRITE INTO TABLE person partition (dt='20200415');
    • LOAD DATA LOCAL INPATH 'person.txt' OVERWRITE INTO TABLE person partition (dt='20200421');
      在这里插入图片描述
  • ③ 查看数据
    • select * from person;
      在这里插入图片描述
  • ④ 分区查询
    • select fav[0] from person where dt='20170315';
      在这里插入图片描述
  • ⑤不分区查询
    • select fav[0] from person;
      在这里插入图片描述

4、Hive数据存放在HDFS的哪个位置?

  • 在安装目录的conf文件夹下查看hive-site.xml文件
    在这里插入图片描述

在这里插入图片描述

  • 进入HDFS文件系统查看在这里插入图片描述

三、分桶

1、概念:

  • 分桶是相对分区进行更细粒度的划分。分桶将整个数据内容按照某列属性值得hash值进行区分

2、创建表

  • CREATE TABLE person1(

  • id INT, name STRING,

  • age INT,

  • fav ARRAY<STRING>,

  • addr MAP<STRING,STRING>)

  • COMMENT 'This is the person table'

  • PARTITIONED BY(dt STRING)

  • clustered by (id) into 4 buckets

  • ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  • COLLECTION ITEMS TERMINATED BY '-'

  • MAP KEYS TERMINATED BY ':'

  • STORED AS TEXTFILE;
    在这里插入图片描述

3、导入数据到person1表

  • ① 创建person.txt文件在这里插入图片描述
  • ② 导入数据
    • LOAD DATA LOCAL INPATH 'person.txt' OVERWRITE INTO TABLE person1 PARTITION(dt='20200511')
      在这里插入图片描述
  • ③ 按桶查询
    • select * from person1 tablesample(bucket 1 out of 4 on id);
      在这里插入图片描述
  • ④ 数据存放
    • 原数据文件仍然以分区存在,不以桶的形式存在,其实分桶已经生效,查询效率大大提高。

四、HIve外部表和内部表

  • 概念:
    • ①MANAGED_TABLE,默认是内部表(托管表);②EXTERNAL_TABLE是外部表。
      ③在创建命令前加external 关键字就是外部表
  • 区别
    • ④内表删除表或者分区元数据和数据都删了;
      ⑤外表删除表元数据删除,数据保留。
      ⑥如果数据共享,其他应用也用,就用外部表;否则只是hive用,就用内部表。

五、HIve启动后台服务

1、启动后台服务

  • hive --service hiveserver2 &

2、通过后台服务连接数据库

  • beeline
  • !connect jdbc:hive2://+addr:+port root
    在这里插入图片描述
    ---------------------------------------------未完待续------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值