zoukankan      html  css  js  c++  java
  • 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.多列,具有很多列字段,但是查询只会使用一个字段或者很少的一组字段。基于列式存储将会使分析表数据执行的更快。
  • 相关阅读:
    VC6.0 突然打不开dsw 工程文件的解决方案
    windows10 专业版的远程服务器管理工具下载
    Win10更新
    Python爬取网络图片
    SQL中触发器的使用
    SQL中游标的使用
    SQL 中用户定义函数的使用方法
    linux mint 五笔安装方法
    远程桌面为什么勾选上了本地资源,但是在远程的计算机上还是不显示本地资源磁盘呢,是什么原因导致的
    Linux Mint SmoothTask2的安装方法
  • 原文地址:https://www.cnblogs.com/lijingang/p/11391118.html
Copyright © 2011-2022 走看看