• hive复杂数据类型: 如何存 如何取


    目前所学的复杂数据类型有三种array,map,struct。

    复杂数据类型: 如何存 如何取(*****)

    1.array(用这种数据类型的特点就是集合里的每一个字段都是一个具体的信息,不会是那种key与values的关系)

    load数据如上所示,一共两个字段,ruoze  和他们工作的城市

    也就是字段与字段之间的分割用table array字段之间的分割用“,”。

    create table hive_array(
    name string,
    work_locations array<string>
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '--表示字段与字段之间的分割用table
    COLLECTION ITEMS TERMINATED BY ',';--表示集合之内的分割用逗号。集合就是代表array这个复杂数据类型里边的数据之间的分割。

    load data local inpath '/home/hadoop/data/hive_array.txt'
    overwrite into table hive_array;


    select * from hive_array where array_contains(work_locations,'tianjin');

    array_contains这个函数是array_contains(array字段,‘字段包含的内容’)

    比如以上就是array字段包含tianjin的数据。

    2.map : key-value

    以上数据一共有3个字段,分别为id,name,member。其中member里的内容都是以key:values的形式出现的,若是这种形式一般用map这种复杂数据类型


    father:xiaoming#mother:xiaohuang#brother:xiaoxu
    create table hive_map(
    id int,
    name string,
    members map<string,string>,
    age int
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','--字段之间用逗号分隔
    COLLECTION ITEMS TERMINATED BY '#'--集合也就是map字段中的数据key:values相互之间用#分割
    MAP KEYS TERMINATED BY ':';map中key与values之间用冒号分割

    load data local inpath '/home/hadoop/data/hive_map.txt'
    overwrite into table hive_map;

    3.struct struct('a',1,2,3,4)(这个数据类型的特点就是可以包含各种各样的数据类型。但是struct可以是任意数据类型,在写struct数据类型时,在<>中要写清楚struct字段中的字段名称跟数据类型)

    create table hive_struct(
    ip string,
    userinfo struct<name:string,age:int>--struct这个数据类型中的字段名,字段类型

    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '#'--字段之间的分割用#
    COLLECTION ITEMS TERMINATED BY ':';--集合之间的分割用冒号

    load data local inpath '/home/hadoop/data/hive_struct.txt'
    overwrite into table hive_struct;

  • 相关阅读:
    HDU
    HDU
    CodeForces
    HDU——2955 Robberies (0-1背包)
    南京区域赛之后
    算法作业三-哈夫曼编码
    HDU
    POJ 1220 NUMBER BASE CONVERSION(进制转换,大数)
    HDU 1535 Invitation Cards(最短路)
    HDU 3572 Task Schedule(网络流+当前弧优化)
  • 原文地址:https://www.cnblogs.com/xuziyu/p/10551872.html
Copyright © 2020-2023  润新知