Hive 数据类型 + Hive sql

Hive 数据类型 + Hive sql

基本类型

  • 整型
    • int tinyint (byte) smallint(short) bigint(long)
  • 浮点型
    • float double
  • 布尔
    • boolean
  • 字符
    • string char(定长) varchar(变长)
  • 时间类型
    • timestamp date

引用/复合类型

  • 优点类似于容器(Container),便于我们操作数据
  • 复合类型可以和复合类型相互嵌套
  • Array
    • 存放相同类型的数据
    • 数据按照索引进行查找,索引默认从0开始
    • user[0]
  • Map
    • 一组键值对,通过key可以访问到value
    • key不能相同,相同的key会相互覆盖
    • map['first']
  • Struct(就是C语言中的结构体, golang中也有)
    • 定义对象的属性,结构体的属性都是固定的
    • 通过属性获取值
    • user.uname

类型转换

  • 自动
    • 任何整数类型都可以隐式地转换为一个范围更广的类型
    • 所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。
    • TINYINT、SMALLINT、INT都可以转换为FLOAT。
    • BOOLEAN类型不可以转换为任何其它的类型。
  • 强制
    • CAST('1' AS INT)
  • 在设计表的时候,尽量将数据类型设置为合适的类型
  • 防止以后操作中没必要的麻烦

DDL操作--数据库

库,表,字段等命名要注意命名规范

执行数据库组件的定义(创建,修改,删除)功能

执行任何的hivesql语句在语句末尾都要加上分号(;)

数据库

  • 创建数据库

    • 每创建一张表都会在HDFS文件系统中创建一个目录

      • create database ronnie;
      • create database if not exists ronnie;
    • 创建数据库并制定存放的位置

      • create database ronnie location '/ronnie/ronnie_test;

        1569236690603

  • 删除数据库

    • drop database 库名;
    • drop database if exists 库名;
    • 如果当前库不为空,级联删除
      • drop database if exists 库名 cascade;
  • 修改数据库信息

    • 数据库的其他元数据信息都是不可更改的
      • 数据库名
      • 数据库所在的目录位置。
    • alter database ronnie set dbproperties('createtime'='20170830');[设置库属性]
  • 显示数据库

    扫描二维码关注公众号,回复: 7344175 查看本文章
    • show databases;

      hive> show databases;
      OK
      default
      ronnie
      Time taken: 0.228 seconds, Fetched: 2 row(s)
      hive> 
      
    • show databases like 'r*'; [模糊匹配]

    hive> show databases like'r*';
    OK
    ronnie
    Time taken: 0.01 seconds, Fetched: 1 row(s)
    hive> 
    
  • 查看信息

    • desc database ronnie;
  • 使用数据库

    • use ronnie;

DDL操作-表

  • 表的创建方式:表示对数据的映射,所以表示根据数据来设计的

创建表

  • 创建表写语句的时候,千万不要出现tab键,会出现乱码

  • 创建数据文件,上传到Linux

  • 创建userinfo表,会在数据库的文件夹中创建一个表名文件夹

  • 将数据载入到表中

    ronnieInfo.txt
1,luna,00000
2,slark,11111
3,sven,22222
4,anit_mage,33333
create table ronnieInfo(
id int,
uname string,
password string
)
row format delimited fields terminated by ',' lines terminated by '\n';

load data local inpath '/root/ronnieInfo.txt' overwrite into table ronnieInfo;

select * from ronnieInfo
select id from ronnieInfo where id = 2;

命令行显示:

hive> select * from ronnieInfo;
OK
1   luna    00000
2   slark   11111
3   sven    22222
4   anit_mage   33333
Time taken: 0.322 seconds, Fetched: 4 row(s)
hive> select id from ronnieInfo where id = 2;
OK
2
Time taken: 0.151 seconds, Fetched: 1 row(s)
重要指令集:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
(col_name data_type [COMMENT col_comment], ...)
[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] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
  • CREATE
    • 关键字,创建表
  • [EXTERNAL]
    • 表的类型,内部表还是外部表
  • TABLE
    • 创建的类型
  • [IF NOT EXISTS]
    • 判断这个表是否存在
  • table_name
    • 表名,要遵循命名规则
  • (col_name data_type [COMMENT col_comment], ...)
    • 定义一个列 (列名1 数据类型1,列名2 数据类型1)
    • 列与列之间用逗号隔开,最后一个列不需要加,
  • [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]
    • 分桶
  • [ROW FORMAT row_format]
    • 每一行数据切分的格式
  • [STORED AS file_format]
    • 数据存放的格式
  • [LOCATION hdfs_path]
    • 数据文件的地址

修改表

修改表的时候文件夹也会修改名字

ALTER TABLE ronnieInfo RENAME TO ronnie_info;

更新列

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment][FIRST|AFTER column_name];

增加替换列

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...);

查看表结构

desc table_name;

删除表

DROP TABLE [IF EXISTS] table_name;

猜你喜欢

转载自www.cnblogs.com/ronnieyuan/p/11574504.html