• Hive视图


    Hive中的视图是只读的,所以无法通过视图向基表(base table)加载或插入数据。

    视图的 SELECT 语句只在执行引用视图的语句时才执行。

    对于上节用于 查询每年各个气象站气温最大值的均值 的HQL语句,可以先创建一个记录有效记录(即有特定quality值)的视图:

    CREATE VIEW valid_records AS
    SELECT * FROM records2
    WHERE temperature != 999
    AND (quality=0 OR quality=1 OR quality=4 OR quality=5 OR quality=9);

    创建视图时并不执行查询,查询只是存储在metastore中

    SHOW TABLES命令的输出结果里包括视图。使用 DESCRIBE EXTENDED view_name查看某个视图的详细信息,包括用于定义它的那个查询。 

    接下来,基于第一个视图,建立第二个视图(每个观测站每年的最高气温):

    CREATE VIEW view_max_temperatures (station, year, max_temperature) AS
    SELECT station, year, MAX (temperature) FROM valid_records
    GROUP BY station, year;

    在这个视图定义中,显示列出了列的名称。因为最高气温列是一个聚集表达式,如果我们不指明,Hive会自己创建一个别名(例如_C2)。

    我们也可以在SELECT语句中使用AS子句来为列命名( MAX(temperature) AS max_temperature)。

     

    有了这两个视图,现在我们就可以执行查询了:

    SELECT station, year, AVG(max_temperature)

    FROM view_max_temperatures

    GROUP BY station, year;

    这个查询的结果和前面使用子查询的结果是一样的。并且,Hive为他们所使用的MR作业也一样:2个,每个GROUP BY使用一个MR作业。

  • 相关阅读:
    Scala学习(八)---Scala继承
    Scala学习(九)---文件和正则表达式
    Scala学习(六)---Scala对象
    jemter----命令行模式(cmd)导出测试报告
    js数据类型
    定期任务,如每月清理(SpringBoot Mybatis-Plus)
    定时执行任务(SpringBoot Mybatis-Plus)
    图片服务映射(SpringBoot mybatis-plus)
    图片压缩上传(Springboot mybatis-plus)
    java生成pdf
  • 原文地址:https://www.cnblogs.com/skyl/p/4737419.html
Copyright © 2020-2023  润新知