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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    小程序导航栏文字动态修改
    小程序之页面跳转传递参数问题
    怎样像gitHub上上传文件
    js实现数组去重
    Promise 解决同步请求问题
    input 实现一次性上传文件
    layui中load具体用法
    echarts点击柱状图时触发点击事件
    js求100以内的素数
    js怎样判断一个数是质数
  • 原文地址:https://www.cnblogs.com/handsome-24/p/11202219.html
Copyright © 2011-2022 走看看