Hive, 大数据

hive-03 数据类型

基本数据类型

  • 字符串”2020-01-01″ 进行日期操作 会自动转换日期类型进行操作
  • String类型 相当于数据库中的varchar 理论上可以存储2GB的字符数
  • 允许任意层次的嵌套
  • 定义Array需要定义元素之间分隔符
  • 定义Map需要定义键值对之间分隔符和一组k-v分隔符
  • STRUCT需要定义javaBean类似结构

样例数据

{
    "name": "songsong",
    "friends": ["bingbing", "lili"],   // 列表array
    "children": {  // 键值Map
        "xiao song": 18,
        "xiaoxiao song": 19
    },
    "address": {
        "street": "hui long guan",
        "city": "beijing"
    }
}
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 ':'  -- 字典kv之间分隔符
lines terminated by '\n';  -- 每条数据分隔符

访问数组方式

select friends[0] from test;

map访问方式

select children["xiao song] from test;

struct访问方式

select address.street from test01;

类型转换

  • 隐式类型转换
    • 任何整数类型都可以饮食地转换为一个范围更广的类型
    • 所有整数类型、float和string类型都可以隐式转换成double
    • tinyint smallint int 都可以转换为float
    • boolean类型不可以转换为其他类型
  • 可以使用CAST操作显示进行数据类型转换
CAST('1' AS INT) -- 将字符串1 转换成整数1