zoukankan      html  css  js  c++  java
  • 大数据HIve

    1. 题目说明

    设计题:MySQL数据库A有1000w条数据,完成统计再输入到另外的B表中

    A表

    test1 0.2,3.5,1,1
    test1 1.2,2.3,4.56
    test2 2.1,0.3,9.2,3.5,2.4
    test3 2.1,4.5,3.4,7.65
    test4 1.2,3.4,54,32.1,12.3
    test5 12.1,12.3
    test5 12.34
    test5 0.01,0.02
    test6 2.3,45.3,23.21
    test6 23.4,23,22.12
     B表

    test1 0.2 4.56
    test2 0.3 9.2
    test3 2.1 7.65
    test4 1.2 54.0
    test5 0.01 12.34
    test6 2.3 45.3
    2. 实现过程

    不使用常规方式实现,这里讨论使用大数据分析工具完成。

    (1)首先需要使用Sqoop将数据到HDFS上,分隔符为制表符

    (2)常见Hive表

    hive (default)> create table mydb(name string,num array<double>)
    > row format delimited fields terminated by ' '
    > collection items terminated by ',';
    (3)导入数据(这里使用本地测试文件)

    hive (default)> load data local inpath '/home/fanl/data/mydb' into table mydb;
    (3)查询表信息

    (4)因为Hive的数组类型字段,可以用sort_array对每一行数据进行排序

    hive (default)> select name,sort_array(num) from mydb;


    这里每一行的最大值和最小值已经看到了,最小值为num[0],最小值为num[长度-1],数组字段的长度函数是size(num)

    (5)综合起来,并且按name分组

    hive (default)> select s.name,min(s.min) as min,max(s.max) as max
    > from(select t.name,t.num[0] as min,t.num[size(num)-1] as max
    > from (select name,sort_array(num) as num from mydb) t)s
    > group by s.name;

    ---------------------
    作者:樊领
    来源:CSDN
    原文:https://blog.csdn.net/qq_15973399/article/details/89963854
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    训练赛
    树形dp专题
    返回的中文乱码问题
    富文本内容放在xml标签中;
    xml 截取 标签中的字符串;字符串去掉空格
    Intetn 传输 (2)
    安卓修改标题栏
    简单的数据存储(SharedPreferences.Editor)
    Intent的数据传输
    python实现快排+冒泡排序
  • 原文地址:https://www.cnblogs.com/handsome-24/p/11202219.html
Copyright © 2011-2022 走看看