• hive发杂数据结构的使用,struct,array,map


    一个简单介绍http://jimi68.iteye.com/blog/980573

    一般的复杂介绍:http://songpo-ath-taobao-com.iteye.com/blog/1405136

    hive提供了复合数据类型:
    Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域a
    Maps(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M['group']来获取
    Arrays:array中的数据为相同类型,例如,假如array A中元素['a','b','c'],则A[1]的值为'b'

    Struct使用

    建表:

    [plain] view plaincopy
    1. hive> create table student_test(id INT, info struct<name:STRING, age:INT>)  
    2.     > ROW FORMAT DELIMITED FIELDS TERMINATED BY ','                         
    3.     > COLLECTION ITEMS TERMINATED BY ':';                                   
    4. OK  
    5. Time taken: 0.446 seconds  
    'FIELDS TERMINATED BY' :字段与字段之间的分隔符
    ''COLLECTION ITEMS TERMINATED BY' :一个字段各个item的分隔符 
    导入数据:
    [plain] view plaincopy
    1. $ cat test5.txt   
    2. 1,zhou:30  
    3. 2,yan:30  
    4. 3,chen:20  
    5. 4,li:80  
    6. hive> LOAD DATA LOCAL INPATH '/home/work/data/test5.txt' INTO TABLE student_test;  
    7. Copying data from file:/home/work/data/test5.txt  
    8. Copying file: file:/home/work/data/test5.txt  
    9. Loading data to table default.student_test  
    10. OK  
    11. Time taken: 0.35 seconds  
    查询:
    [plain] view plaincopy
    1. hive> select info.age from student_test;  
    2. Total MapReduce jobs = 1  
    3. ......  
    4. Total MapReduce CPU Time Spent: 490 msec  
    5. OK  
    6. 30  
    7. 30  
    8. 20  
    9. 80  
    10. Time taken: 21.677 seconds  

    Array使用
    建表:
    [plain] view plaincopy
    1. hive> create table class_test(name string, student_id_list array<INT>)  
    2.     > ROW FORMAT DELIMITED                                              
    3.     > FIELDS TERMINATED BY ','                                          
    4.     > COLLECTION ITEMS TERMINATED BY ':';                               
    5. OK  
    6. Time taken: 0.099 seconds  
    导入数据:
    [plain] view plaincopy
    1. $ cat test6.txt   
    2. 034,1:2:3:4  
    3. 035,5:6  
    4. 036,7:8:9:10  
    5. hive>  LOAD DATA LOCAL INPATH '/home/work/data/test6.txt' INTO TABLE class_test ;  
    6. Copying data from file:/home/work/data/test6.txt  
    7. Copying file: file:/home/work/data/test6.txt  
    8. Loading data to table default.class_test  
    9. OK  
    10. Time taken: 0.198 seconds  
    查询:
    [plain] view plaincopy
    1. hive> select student_id_list[3] from class_test;  
    2. Total MapReduce jobs = 1  
    3. ......  
    4. Total MapReduce CPU Time Spent: 480 msec  
    5. OK  
    6. 4  
    7. NULL  
    8. 10  
    9. Time taken: 21.574 seconds  

    Map使用
    建表:
    [plain] view plaincopy
    1. hive> create table employee(id string, perf map<string, int>)       
    2.     > ROW FORMAT DELIMITED                                          
    3.     > FIELDS TERMINATED BY ' '                                
    4.     > COLLECTION ITEMS TERMINATED BY ','                       
    5.     > MAP KEYS TERMINATED BY ':';                                    
    6. OK  
    7. Time taken: 0.144 seconds  
    ‘MAP KEYS TERMINATED BY’ :key value分隔符

    导入数据:
    [plain] view plaincopy
    1. $ cat test7.txt   
    2. 1       job:80,team:60,person:70  
    3. 2       job:60,team:80  
    4. 3       job:90,team:70,person:100  
    5. hive>  LOAD DATA LOCAL INPATH '/home/work/data/test7.txt' INTO TABLE employee;  
    查询:
    [plain] view plaincopy
    1. hive> select perf['person'] from employee;  
    2. Total MapReduce jobs = 1  
    3. ......  
    4. Total MapReduce CPU Time Spent: 460 msec  
    5. OK  
    6. 70  
    7. NULL  
    8. 100  
    9. Time taken: 20.902 seconds  
    10. hive> select perf['person'] from employee where perf['person'] is not null;     
    11. Total MapReduce jobs = 1  
    12. .......  
    13. Total MapReduce CPU Time Spent: 610 msec  
    14. OK  
    15. 70  
    16. 100  
    17. Time taken: 21.989 seconds  
    18. hive>   
    19. <span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">  
    20. </span></span>
  • 相关阅读:
    js阶段循环(for,while,do-while,for-in),判断(if,switch),练习题
    翻牌器
    用 VSCode 调试网页的 JS 代码
    图形化设置数据库规则
    js中ES6数据结构Map 、Set 、WeakMap 、 WeakSet
    css的filter方法,给图片添加滤镜
    使用<a-select>时,placeholder不起作用,提示语不显示
    Vue数据更新但页面没有更新的多种情况
    react事件处理-函数绑定
    在css中使用js定义的变量
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205461.html
Copyright © 2020-2023  润新知