• hive笔记(二):数据类型-基本数据类型/集合数据类型/类型转换


    目录

    数据类型

    基本数据类型

    集合数据类型

    类型转换


    数据类型

    基本数据类型

    hive数据类型java数据类型长度例子
    TINYINTbyte1byte10
    SMALINTshort2byte10
    INTint4byte10
    BIGINTlong8byte10
    BOOLEANboolean布尔类型TRUE/FALSE
    STRINGstring字符类型‘Tom’/"TOM"
    FLOATfloat单精度浮点数2.3
    DOUBLEdouble双精度浮点数3.14159
    BINARY字节数组
    TIMESTAMP时间类型

    HiveString类型相当于数据库的varchar类型,该类型是一个可变的字符串,理论上可以存储2GB的字符数。

    集合数据类型

    数据类型描述语法展示
    MAP键值对元组集合,使用数组表示法访问。例如:数据类型为MAP,键值对为‘first’ =>'Tom'和‘last’=>'Jeffry',可以通过字段名first访问第一个元素。

    map()

    例:map

    ARRAY数组,一组具有相同类型和名称的变量的集合。变量为数组的元素,编号从0开始。例如:数组为['Tom','Jeffry'],可以通过[1]访问Jeffry,通过[0]访问Tom。

    Array()

    例:array

    STRUCT通过“点”来访问,

    它封装了一个命名字段集合,复杂数据

    类型允许任意层次的嵌套。

    。例如:STRUCT(first string,last string),第一个元素可以通过字段first来使用。

    struct()

    例:struct

    Hive有三种复杂数据类型ARRAYMAPSTRUCTARRAYMAPJava中的Array和Map类似,STRUCTC语言中的Struct类似。

    例子(三种不同类型的json表达):

     (1)创建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,ARRAY,STRUCT元素之间可以用统一的字符表示。这里用下划线·“_”。

    (2)创建hive

    1. create table test(
    2. name string,
    3. friends array<string>,
    4. children map<string, int>,
    5. address struct<street:string, city:string> )
    6. row format delimited fields terminated by ','
    7. collection items terminated by '_'
    8. map keys terminated by ':'
    9. lines terminated by '\n';

    注:

    row format delimited fields terminated by ',' :列分隔符;

    collection items terminated by '_' :MAP,STRUCT,ARRAY里的元素分隔符;

    map keys terminated by ':' :MAP中的keyvalue的分隔符;

    lines terminated by '\n'; :行分隔符;

    (3)导入数据

    load data local inpath '/root/datas/test.txt' into table test;

    注:HDFS上数据存储的位置        :/user/hive/warehouse/test.db/test

    (4)查看数据

    select * from test;

    类型转换

    Hive的原子数据类型可以进行隐式转换,但是不会进行反向转化。

    例如:使用INT类型,TINYINT会自动转换为INT类型;例如:某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,除非使用CAST操作,否则会返回错误。

     (1)隐式类型转换

    1)任何整数类型都可以转化为更高级的类型,比如:TINYINT=>INT,INT=>BIGINT;

    2)TINYINT,SMALLINT,INT => FLOAT

    3)任何整数类型(float、string)都可以转换为double类型;

    4)BOOLEAN类型不可以转换;

    (2)显式类型转换

    例如:CAST('1' AS INT)将把字符串'1' 转换成整数1

    例如:执行CAST('X' AS INT);表达式返回空值NULL,强制类型转换失败。

    本文为学习笔记!!!

  • 相关阅读:
    HMS Core使能AI智慧体验,共建创新应用生态
    2023年中职“网络安全“—Web 渗透测试②
    Spring Boot 中的 ApplicationRunner 和 CommandLineRunner
    真正的成长没有速成剂,都是风吹雨打过来的
    accelerate 的一个tip:early stopping 处可能存在的bug
    SpringBoot学习笔记-项目初始化
    知网G4《基础教育论坛》期刊投稿邮箱
    【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)
    C语言-基础
    Python-进程和线程
  • 原文地址:https://blog.csdn.net/qq_55906442/article/details/126479619