• HiveQL:模式设计


    1.关于分区

    1.HDFS用于设计存储数百万的大文件,而非数十亿的小文件,如果分区过多,会创建大量的小文件,最终会超出NameNode的处理能力。因为NameNode必须要将所有的系统文件的元数据信息保存到内存中。每个文件的元数据大小为150字节,但是会限制HDFS实例所能管理文件总数的上限。
    2.默认情况下,每个task都是一个新的JVM的实例,都需要开启和销毁的开销。对于小文件,每个文件都会对应一个task,在一些情况下,JVM开启和销毁时间中销毁时间可能比实际处理数据的时间还要长。
    3.因此,一个理想的分区方案不应该是导致产生太多的分区和文件夹目录,并且每个目录的文件应该足够大,是文件系统中块大小的若干倍。

    2.同一份数据多种处理

    1.hive本身提供了一个独特的语法,它可以从一个数据源产生多个数据聚合,而无需每次聚合都扫描一次
    FROM history
    INSERT OVERWRITE sales SELECT *  WHERE action = 'purchased'
    INSERT OVERWRITE credits SELECT *  WHERE action = 'returned'

    3.分桶表数据存储

    --

    4.为表增加列

    -- 1.Hive提供了SerDe抽象,其用于输入中提取数据,也同样用于输出数据。一个SerDe通常是从左到右进行解析的。通过指定的分隔符分解成列。
    -- 2.hive表可以坐在底层数据增加一个字段,但是只能在末尾增加,无法在已有字段的开始或者中间增加字段

    5.使用列式存储表

    -- 1.没有足够行,一些列中会有很多重复数据,建议列式存储。
    -- 2.多列,具有很多列字段,但是查询只会使用一个字段或者很少的一组字段。基于列式存储将会使分析表数据执行的更快。
  • 相关阅读:
    Python+Flask使用蓝图
    Python+selenium实现自动登录
    Python+Flask做个简单的表单提交程序
    第一个Flask程序
    PHP读取IIS网站列表
    在IIS7上导出所有应用程序池的方法 批量域名绑定
    Delphi判断一个字符串是否全是相同的数字
    WeTest六周年 | 匠心不改 初心不变
    WeTest压测大师链路性能监控 | 一站式压测、监控解决方案,开放免费体验预约
    WeTest自助压测1折起,最低1分钱参与Q币抽奖
  • 原文地址:https://www.cnblogs.com/lijingang/p/11391118.html
Copyright © 2020-2023  润新知