zoukankan      html  css  js  c++  java
  • Inceptor命令04-表


    ORC表与其他表的区别
    1. 只有TEXT、CSV、基于定宽文本文件外表这三种表支持对 字段类型 的修改以及增、删
    字段。
    2. 禁止修改ORC表的字段类型
    3. 禁止对ORC表增、删字段

    ORC表建立的原则
    ORC非事务表的建表只需在建表语句中用 STORED AS ORC 指定存储格式为ORC即可。
    ORC事务表的建表则
    需要几个额外的重点步骤:
        1. 为表分桶:为了保证增删改过程中的性能,我们要求ORC事务表必须是部分排序或者全局排序的,但是全局排序又过于耗费计算资源,因此我们要求ORC表必须是分桶表。
        2. 在 TBLPROPERTIES 里需要加上 "transactional"="true",以标识这是一个要用作事务操作的表。
        3. 如果表的数据量特别大,建议在分桶的基础上再分区,ORC事务表支持单值分区和范围分区。

    ORC表创建
    -- 非分区表
    CREATE TABLE <table_name> (<column> <data_type>, <column> <data_type>, ...)
    CLUSTERED BY (<bucket_key>) INTO <n> BUCKETS
    STORED AS ORC
    TBLPROPERTIES ("transactional"="true");

    -- 创建非分区ORC表。
    DROP TABLE IF EXISTS ta;
    CREATE TABLE ta (name STRING, age INT)
    CLUSTERED BY (age) INTO 2 BUCKETS
    STORED AS ORC TBLPROPERTIES ("transactional"="true");

    -- 单值分区表(Unique Value Partition)
    CREATE TABLE <table_name> (<column> <data_type>, <column> <data_type>, ...)
    PARTITIONED BY (<partition_key> <data_type>)
    CLUSTERED BY (<bucket_key>) INTO <n> BUCKETS
    STORED AS ORC
    TBLPROPERTIES ("transactional"="true");
    -- 范围分区表(Range Partition)
    CREATE TABLE <table_name> (<column> <data_type>, <column> <data_type>, ...)
    PARTITIONED BY RANGE(<partition_key1> <data_type>, <partition_key2> <data_type>, ...) (
    PARTITION [<partition_name_1>] VALUE LESS THAN(<key1_bound_value1>, <key2_bound_value1>, ...),
    PARTITION [partition_name_2] VALUE LESS THAN(key1_bound_value2, key2_bound_value2, ...),
    ...
    )
    CLUSTERED BY (<bucket_key>) INTO <n> BUCKETS
    STORED AS ORC
    TBLPROPERTIES ("transactional"="true");
    注意
    1. 分区表中的分区键partition_key不能和表中的列重复。
    2. 在表结构中,分区键被系统排在非分区键之后。

    -- 创建非分区ORC表。
    DROP TABLE IF EXISTS tg;
    CREATE TABLE tg (name STRING, gpa DOUBLE) CLUSTERED BY (name) INTO 4 BUCKETS STORED AS ORC
    TBLPROPERTIES ("transactional"="true");
    -- 创建单值分区ORC表。
    DROP TABLE IF EXISTS test;
    CREATE TABLE test (a INT, b STRING, c DOUBLE) PARTITIONED BY (date STRING) CLUSTERED BY (c) INTO 8
    BUCKETS STORED AS ORC TBLPROPERTIES ("transactional"="true");
    -- 创建范围分区ORC表。
    DROP TABLE IF EXISTS t5;
    CREATE TABLE t5(id INT, value INT) PARTITIONED BY RANGE(amount INT)
    (
    PARTITION less1 VALUES LESS THAN (1),
    PARTITION less10 VALUES LESS THAN (10),
    PARTITION less100 VALUES LESS THAN (100)
    )
    CLUSTERED BY (id) INTO 5 BUCKETS STORED AS ORC TBLPROPERTIES ("transactional"="true");






  • 相关阅读:
    perl 调短信接口
    MySQL处理千万级数据查询、分页
    tomcat 设置path 访问路径
    Tomcat 设置内存大小
    Tomcat 80端口启动 必须是root
    tomcat server.xml配置解析
    Perl 发送邮件
    单身北漂生活二、三事(上)——北漂18年(8)
    tomcat 应用访问
    Perl 采集监控日志插入数据库
  • 原文地址:https://www.cnblogs.com/wang3680/p/12809301.html
Copyright © 2011-2022 走看看