精华内容
下载资源
问答
  • Hive数据类型

    2021-01-04 10:55:08
    Hive数据类型前言一、基本数据类型二、集合数据类型三.类型转化总结 前言 本文主要讲解Hive数据类型及其使用 一、基本数据类型 可以看到在常用的数据类型中,除了long类型在Hive中的类型为BIGINT,其他的的数据类型...


    前言

    本文主要讲解Hive数据类型及其使用

    一、基本数据类型

    在这里插入图片描述
    可以看到在常用的数据类型中,除了long类型在Hive中的类型为BIGINT,其他的的数据类型表达和Java的数据类型表达基本相同。
    对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。

    二、集合数据类型

    在这里插入图片描述
    Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的 Array和 Map 类似,而 STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。
    1 ) 案例实操
    (1)假设某表有如下一行,我们用 JSON 格式来表示其数据结构。在 Hive 下访问的格
    式为

    {
    "name": "songsong",
    "friends": ["bingbing" , "lili"] , //列表 Array,
    "children": { //键值 Map,
    "xiao song": 18 ,
    "xiaoxiao song": 19
    }
    "address": { //结构 Struct,
    "street": "hui long guan",
    "city": "beijing"
    }
    }
    

    (2)基于上述数据结构,我们在 Hive 里创建对应的表,并导入数据。创建本地测试文件 test.txt
    songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long
    guan_beijing
    yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
    注意:MAP,STRUCT 和 ARRAY 里的元素间关系都可以用同一个字符表示,这里用“_”。
    (3)Hive 上创建测试表 test

    create table test(
    name string,
    friends array<string>,
    children map<string, int>,
    address struct<street:string, city:string>
    )
    row format delimited fields terminated by ','
    collection items terminated by '_'
    map keys terminated by ':'
    lines terminated by '\n';
    

    字段解释:
    row format delimited fields terminated by ‘,’ – 列分隔符
    collection items terminated by ‘_’ --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
    map keys terminated by ‘:’ – MAP 中的 key 与 value 的分隔符
    lines terminated by ‘\n’; – 行分隔符
    (4)导入文本数据到测试表

    load data local inpath '/opt/module/hive/datas/test.txt' into table test;
    

    (5)访问三种集合列里的数据,以下分别是 ARRAY,MAP,STRUCT 的访问方式

    hive (default)> select friends[1],children['xiao song'],address.city from
    test
    where name="songsong";
    OK
    _c0 _c1 city
    lili 18 beijing
    Time taken: 0.076 seconds, Fetched: 1 row(s)
    

    三、类型转化

    Hive 的原子数据类型是可以进行隐式转换的,类似于 Java 的类型转换,例如某表达式使用 INT 类型,TINYINT 会自动转换为 INT 类型,但是 Hive 不会进行反向转化,例如,某表达式使用 TINYINT 类型,INT 不会自动转换为 TINYINT 类型,它会返回错误,除非使用 CAST操作。
    1 ) 隐式类型转换规则如下
    (1)任何整数类型都可以隐式地转换为一个范围更广的类型,如 TINYINT 可以转换成INT,INT 可以转换成 BIGINT。
    (2)所有整数类型、FLOAT 和 STRING 类型都可以隐式地转换成 DOUBLE。
    (3)TINYINT、SMALLINT、INT 都可以转换为 FLOAT。
    (4)BOOLEAN 类型不可以转换为任何其它的类型。
    2 ) 可以使用 CAST 操作显式进行数据类型转换
    例如 CAST(‘1’ AS INT)将把字符串’1’ 转换成整数 1;如果强制类型转换失败,如执行CAST(‘X’ AS INT),表达式返回空值 NULL。

    0: jdbc:hive2://hadoop102:10000> select '1'+2, cast('1'as int) + 2;
    +------+------+--+
    | _c0 | _c1 |
    +------+------+--+
    | 3.0 | 3 |
    +------+------+--+
    

    总结

    以上就是今天要讲的内容,本文简单介绍了Hive的数据类型和使用以及和Java数据类型的一些差异。

    展开全文
  • Hive 数据类型 + Hive sql基本类型整型int tinyint (byte) smallint(short) bigint(long)浮点型float double布尔boolean字符string char(定长) varchar(变长)时间类型timestamp date引用/复合类型优点类似于容器...

    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;

    删除数据库

    drop database 库名;

    drop database if exists 库名;

    如果当前库不为空,级联删除

    drop database if exists 库名 cascade;

    修改数据库信息

    数据库的其他元数据信息都是不可更改的

    数据库名

    数据库所在的目录位置。

    alter database ronnie set dbproperties('createtime'='20170830');[设置库属性]

    显示数据库

    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;

    展开全文
  • hive也支持varchar,date,datetime,decaimal等类型,下面对这些类型与关系型数据库的差别进行探索。```create table test.type_tab(id bigint,col1 varchar(10),col2 date,col3 timestamp,col4 decimal(22,6));...

    hive也支持varchar,date,datetime,decaimal等类型,下面对这些类型与关系型数据库的差别进行探索。

    ```

    create table test.type_tab(

    id bigint,

    col1 varchar(10),

    col2 date,

    col3 timestamp,

    col4 decimal(22,6)

    );

    insert into test.type_tab

    select 100,'01234567890','2018-12-31','2018-12-31 12:30:00',2873.99834475755775;

    insert into test.type_tab

    select 101,'01234567890123','2018-12-31','2018-12-31 12:30:00',2873.99834475755775;

    ```

    查看结果:

    ```

    select * from test.type_tab;

    type_tab.id |type_tab.col1 |type_tab.col2 |type_tab.col3       |type_tab.col4 |

    ------------|--------------|--------------|--------------------|--------------|

    100         |0123456789    |2018-12-31    |2018-12-31 12:30:00 |2873.998345   |

    101         |0123456789    |2018-12-31    |2018-12-31 12:30:00 |2873.998345   |

    ```

    由此可见varchar指定字段长度,当字段超长则被自动截断。decaiml超过精度则财务四舍五入到目标精度。

    转载至链接:https://my.oschina.net/huhaicool/blog/1861859

    展开全文
  • 基本数据类型:对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。集合数据类型:STRUCT:和C语言中的struct类似...

    基本数据类型:

    对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。

    集合数据类型:

    STRUCT:和C语言中的struct类似,都可以通过“点”符号访问元素内容。

    MAP:MAP是一组键-值对元组集合,使用数组表示法可以访问数据。

    ARRAY:数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。

    Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。

    类型转化:

    Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。

    1)隐式类型转换规则如下

    (1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。

    (2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。

    (3)TINYINT、SMALLINT、INT都可以转换为FLOAT。

    (4)BOOLEAN类型不可以转换为任何其它的类型。

    2)可以使用CAST操作显示进行数据类型转换

    例如CAST('1' AS INT)将把字符串'1' 转换成整数1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

    展开全文
  • Hive 数据类型

    千次阅读 2020-07-30 23:54:07
    Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。 3. 案例实操 3.1 假设某表有如下...
  • 大数据技术之Hive(Hive数据类型) Hive数据类型 1.1 基本数据类型 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的...
  • 第 3 章 Hive 数据类型 3.1 基本数据类型 对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。 3.2 集合...
  • Hive 数据类型 + Hive sql

    2019-09-30 00:47:10
    Hive 数据类型 + Hive sql 基本类型 整型 int tinyint (byte) smallint(short) bigint(long) 浮点型 float double 布尔 boolean 字符 string char(定长) varchar(变长) 时间类型 timestamp date 引用/...
  • Hive 数据类型 + Hive sql基本类型整型int tinyint (byte) smallint(short) bigint(long)浮点型float double布尔boolean字符string char(定长) varchar(变长)时间类型timestamp date引用/复合类型优点类似于容器...
  • hive数据类型

    2020-01-10 17:22:13
    hive的内置数据类型可分为两大类: 1.基础数据类型 2.复杂数据类型 基础类型有: tinyint,smallint,int,bigint,boolean,float,double,string,binary,timestamp,decimal,char,varchar,date。 欢迎使用Markdown编辑器 ...
  • 标签:1.hive常用的数据类型包括:tinyInt(byte),smallint(short),int,bigint(long),float,double,boolean,string类型。【括号中对应java类型】补充:对于mysql中的varchar和char类型:若字符串长度小于10...
  • 作者: 孙晨c出处:https://www.cnblogs.com/sunbr/p/13759189.html基本数据类型对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以...
  • 下面介绍几种常用的数据类 ...(2)VARCHAR2()该数据类型用于定义可变长度的字符串,其中用于指定字符串的最大长度,必须是正整数且不超过32767。使用VARCHAR2类型定义变量时,必须指定的值。需要注意的是,在P...
  • 文章目录**HIVE数据类型**arraysmapsstructs参考资源 HIVE数据类型 毕竟HIVE穿着SQL的外壳,肯定支持诸如Mysql这种RDBMS的数据类型,如int,varchar,但是它还具有非常多自有的数据类型,包括复杂的数据类型(数组,...
  • Hive 数据类型详解

    2019-12-15 12:05:31
    1、基本数据类型 对于Hive的String类型相当于数据库的...Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数...
  • 第3章 Hive数据类型3.1 基本数据类型3.2 集合数据类型3.3 类型转化 3.1 基本数据类型 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上...
  • Hive 数据类型 基本数据类型 对于Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。 集合数据类型 Hive 有...
  • (2)、复杂数据类型2. hive基本数据类型基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。 3. hive集合类型集合类型主要包括:arr...
  • 3.1 基本数据类型 对于hive的String类型相当于...Hive数据类型 Java数据类型 长度 举例 TINYINT byte 1byte有符号整数 40 SMALINT short 2byte有符号整数 40 INT int 4byte有符号...
  • 第3章 Hive数据类型

    2019-10-03 18:47:25
    第3章Hive数据类型 3.1 基本数据类型 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。 3.2 集合数据...
  • 四、Hive数据类型

    2020-05-18 17:26:51
    Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。 三、集合类型案例实操 1、假设...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 152
精华内容 60
热门标签
关键字:

hive数据类型varchar