Hive - shelll编程

目录:

  1. HIVE - sql
    1. 数据基本类型
    2. Hive sql分类
  2. HIVE - DDL之数据库的创建
  3. HIVE - DDL之建表和表操作
  4. HIVE分区与分桶
  5. HIVE- DDL之修改表
  6. HIVE- DML之数据管理
  7. HIVE- DQL之数据查询
  8. 使用navicat作为mysql可视化工具查看数据库和表,也可以在hdfs中查看

官方文档

 

一.HIVE - sql

1.Hive数据类型

2.Hive sql分类

 

二.HIVE - DDL之数据库的创建

 

三.HIVE - DDL之建表和表操作

建表和基本表操作


CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

说明:

1.创建最简单的一张表:create table  if not exists 表名(字段 字段类型);
2.TEMPORARY:临时表
3.EXTERNAL:外部表
4.在hive中表的类型有哪些
5.如何查看哪些是内部表、哪些是外部表?
6.创建一张表到指定数据库:两种方式
7.创建一张表,带有备注信息,同时创建多个字段
8.创建一张带有集合类型的表
9.创建一张外部表,指定存储位置(不在默认的位置中)
一般情况下内部表是在默认的位置下,外部表一般情况下不在默认的位置下。
create external table employees(name1 string comment "aaa",name2 string comment "bbb")location "/hive_data/table03";

 

10.如何加载文本进行数据的插入?
11.在创建表时,如何指定字段的分隔符?

12.关于集合类型的值的加载


 

操作:

1.创建一个文本 table05_1.txt
2.将此文本加载到数据表

3.查看表数据

13.like、as的使用

14.在cli中可以直接执行linux命令

例如:

 

四.分区和分桶

  1. 分区
    1. 概念
      hive select 查询中一般会扫描整个表内容,会消耗很多时间做没有必要的工作。
      而分区表指的是在创建表的时候指定partition的分区空间。
      create table tablename(
            name string
      )
      partitioned by(column type[,column type]
    2. 分区的理解
    3. 操作
      步骤1:创建一个最简单的分区表
      步骤2:创建一个数据文本
      步骤3:将数据文本加载到分区表中
      步骤4:查看分区表数据
    4. 其他操作

      说明:
    5. 创建多个分区字段

      并为其加载数据

      说明:
    6. 动态分区:hive动态分区
  2. 分桶
    1. 概念

    2. 理解
    3. 操作
      1.根据表创建分桶

      2.根据区创建分桶
  3. 分区和分桶的区别
    1. 分区是对某个字段设置一定的规则
    2. 分桶是对列哈希取值,然后除以桶的个数的方式决定记录放在哪个桶中,分桶是比分区更细粒度的操作。

 

五.HIVE- DDL之修改表

修改表结构

alter table table_name [partition partition_spsc] change [column] col_old_name col_new_name column_type
[comment col_commnet]  [first|alter column_name] [cascade|restrict];

  1. 添加列:添加一个字段
    alter table emloyee add columns(test String);
  2. 修改列名
    alter table employee change old_name new_name String;
    alter table employee change old_name new_name String after age;//修改列名,并改变name列的位置,如果此列有数据的情况下,数据不会发生交换。
    注意:在改变字段名位置的时候,类型需要匹配。
    这里只是将字段的名称进行了交换,如果表中已有数据不会进行交换。


六.HIVE- DML之数据管理

  1. 导入数据
    1. 从本地加载数据到hive表
      LOAD DATA LOCAL INPATH ‘employee.txt’ OVERWRITE INTO TABLE company.employee patition(sex,age);
    2. 从另一个表加载数据到hive表

      注意:
    3. 从HDFS中导入数据(有数据还原的功能)
  2. 导出数据
    1. 导出数据到HDFS(有数据备份的功能)
  3. 其他
    1. 将某张的数据清空
      TRUNCATE TABLE table04;


七.HIVE- DQL之数据查询



说明:

2.这三者的区别

  1. 执行效果上:  
    count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL  
    count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL  
    count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计  .
  2. 执行效率上:  
    列名为主键,count(列名)会比count(1)快  
    列名不为主键,count(1)会比count(列名)快  
    如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)  
    如果有主键,则 select count(主键)的执行效率是最优的  
    如果表只有一个字段,则 select count(*)最优


 

八.使用navicat作为mysql可视化工具查看数据库和表,也可以在hdfs中查看

Navicat Premium安装教程(激活) 

navcat查看 


在hdfs的web界面查看

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值