zoukankan      html  css  js  c++  java
  • Hive学习之函数DDL和Show、Describe语句

    创建/删除函数

    创建暂时函数

       以下的语句创建由class_name实现的暂时函数,该函数被创建后仅仅能够在当前会话中使用。会话结束后函数失效。

    实现函数的类能够是Hive类路径中的随意类。能够使用Add Jar语句向Hive类路径加入类。

    CREATE  TEMPORARY  FUNCTION  function_name  AS  class_name

    删除暂时函数

       使用以下的语句能够删除当前会话中的暂时函数:

    DROP  TEMPORARY  FUNCTION  [IF  EXISTS] function_name

    创建永久函数

       在Hive-0.13版本号及之后的版本号中,自己定义函数能够被注冊到元存储中,这样用户能够在每次会话中都引用函数而不必每次都创建函数。以下是创建永久函数的语句:

    CREATE FUNCTION[db_name.]function_name AS class_name [USINGJAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ]

       在该语句中能够使用USING从句加入Jar文件、普通文件或者归档文件,当函数第一次使用时,这些文件将会加入到Hive环境中。

    若Hive不是以本地模式执行,file_uri是非本地URI,比方能够使HDFS路径。

    能够使用參数hive.exec.mode.local.auto设置本地模式,将该參数的值设置为true则为本地模式,默觉得false。假设指定了db_name,则函数将加入到指定的数据库,否则加入到当前数据库。引用当前数据库中的函数仅仅需指定函数名,引用非当前数据库中的函数则须要使用全限定函数名db_name. function_name。

    删除永久函数

    删除永久函数的语句为:

    DROP FUNCTION[IF EXISTS] function_name

    Show语句

       在前面学习各种DDL语句时,已经或多或少的使用了一些show语句。比方show databases、show tables等。以下将会系统全面地学习各种show语句。

    Show Databases

       完整的show databases语句例如以下,还能够使用LIKE从句利用正則表達式对数据库进行过滤,只是通配符仅仅能是*(随意字符)或者|(其他选择),通配符须要使用单引號。

    SHOW (DATABASES|SCHEMAS) [LIKE identifier_with_wildcards];

       演示代码例如以下:

    hive> show databases like 'lea*';
    OK
    learning
    Time taken:0.304 seconds, Fetched: 1 row(s)
    hive> show schemas like 'lea*';
    OK
    learning
    Time taken:0.223 seconds, Fetched: 1 row(s)
    Show Tables

    Show Tables

    SHOW TABLES [IN database_name] [identifier_with_wildcards];

       该语句列出当前数据库中全部的表和视图。若使用IN从句则列出指定数据库中的全部表和视图,还能够使用正則表達式进行过滤,通配符和show databases中的通配符使用同样的规则,即仅仅能使用*和|。表和视图依照字母顺序列出。

    show Partitions

    SHOW PARTITIONS table_name  [PARTITION(partition_desc)]

       该语句以字母顺序列出指定表中的全部分区。还能够通过指定部分分区来过滤结果集:

    hive> show partitions people;
    OK
    department=1/sex=0/howold=23
    Time taken: 4.75seconds, Fetched: 1 row(s)
    hive> show partitions people partition(department='1');
    OK
    department=1/sex=0/howold=23
    Time taken:0.716 seconds, Fetched: 1 row(s)
    hive> show partitions people partition(department='2');
    OK
    Time taken:0.376 seconds

       从Hive-0.13版本号開始还能够指定数据库:

    hive> show partitions learning.people;
    OK
    department=1/sex=0/howold=23
    Time taken: 0.25seconds, Fetched: 1 row(s)

    Show Table/Partition Extended

    SHOW TABLE EXTENDED[IN|FROM database_name] LIKE identifier_with_wildcards [PARTITION (partition_desc)]

       该语句列出匹配正則表達式的全部表的信息。假设指定了PARTITION从句则不能使用正則表達式。该语句的输出包含基础表信息和文件系统信息,如totalNumberFiles,totalFileSize, maxFileSize, minFileSize,lastAccessTime和 lastUpdateTime。假设使用了PARTITION则输出指定分区的文件系统信息。

    Show Table Properties

    SHOW TBLPROPERTIES table_name;
    SHOW TBLPROPERTIES table_name (‘属性名’);

       上面的第一个语句以每行一个的格式列出表table_name全部属性,属性和属性值之间以tab分隔。第二个语句输出指定属性的值。

    hive> show tblproperties table_properties;
    OK
    numFiles      0
    last_modified_by      hadoop
    last_modified_time   1402456050
    COLUMN_STATS_ACCURATE false
    transient_lastDdlTime      1402456050
    comment     learning alter properties
    numRows    -1
    totalSize      0
    telephone     1234567
    rawDataSize       -1
    Time taken:0.247 seconds, Fetched: 10 row(s)
    hive> show tblproperties table_properties('telephone');
    OK
    1234567     
    Time taken:0.355 seconds, Fetched: 1 row(s)

    Show Create Table

    SHOW CREATETABLE ([db_name.]table_name|view_name)

       该语句输出创建指定表或者视图的语句。例如以下:

    hive> show create table people;
    OK
    CREATE  TABLE `people`(
      `name` string,
      `age` int,
      `mobile` string COMMENT 'change column name',
      `birthday` date,
      `address` string)
    PARTITIONED BY (
      `department` string,
      `sex` string,
      `howold` int)
    ROW FORMAT SERDE
     'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    STORED ASINPUTFORMAT
     'org.apache.hadoop.mapred.SequenceFileInputFormat'
    OUTPUTFORMAT
     'org.apache.hadoop.mapred.SequenceFileOutputFormat'
    LOCATION
     'hdfs://hadoop:9000/user/hive/warehouse/learning.db/people'
    TBLPROPERTIES (
      'last_modified_by'='hadoop',
      'last_modified_time'='1402539133',
      'transient_lastDdlTime'='1402539133')
    Time taken:0.477 seconds, Fetched: 22 row(s)

    Show Indexes

    SHOW [FORMATTED](INDEX|INDEXES) ON table_with_index [(FROM|IN) db_name]

       该语句输出特定表上的全部索引信息,包含索引名称、表名、被索引的列名、保存索引的表名、索引类型和凝视。假设使用FORMATTED。会为上述信息加入列标题,例如以下图所看到的:

    Show Columns

    SHOW COLUMNS(FROM|IN) table_name [(FROM|IN) db_name]

       该语句输出给定表中包括分区列的全部列:

    hive> show columns in people;
    OK
    name               
    age                
    mobile             
    birthday           
    address            
    department         
    sex                
    howold             
    Time taken:0.493 seconds, Fetched: 8 row(s)

    Show Functions

    SHOW FUNCTIONS"a.*"

       该语句输出匹配正則表達式的自己定义和内置的函数,使用’.*’输出全部函数。

    需要注意的是正則表達式中必需要有点号,否则不会匹配成功,见以下的样例:

    hive>show functions 'av*';
    OK
    Timetaken: 0.022 seconds
    hive>show functions 'av.*';
    OK
    avg
    Timetaken: 0.039 seconds, Fetched: 1 row(s)

    Show Locks

    SHOW LOCKS<table_name>;
    SHOW LOCKS<table_name> EXTENDED;
    SHOW LOCKS<table_name> PARTITION (<partition_desc>);
    SHOW LOCKS<table_name> PARTITION (<partition_desc>) EXTENDED;

       上述语句显示表或者分区上的锁,当使用Hive事务时,上述语句返回以下的信息:

    • 数据库名称
    • 表名称
    • 分区名称(若表存在分区)
    • 锁的状态,能够是以下的一种:
      •  获得:请求者拥有锁
      •  等待:请求者等待锁
      •  终止:锁已经超时但还未被清理
    • 锁的类型。能够是以下的一种:
      • 独占锁:其他不论什么用户不可在同一时间拥有该锁(大多数DDL语句使用该锁。如删除表)。

      •  共享读锁:随意数量的共享读锁能够同一时候锁定同样的资源(读操作取得该锁,令人困惑的是,插入操作也取得共享读锁)。

      • 共享写锁:随意数量的共享读锁能够同一时候锁定同样的资源。但其他共享写锁不同意锁定已经被共享写锁定的资源(更新和删除使用共享写锁)。
    • 若存在与锁关联的事务,则显示其ID
    • 锁的持有者最后一次发送心跳(表明其还存活)的时间
    • 假设锁被获得,则显示获得锁的时间
    • 请求锁的用户
    • 用户执行的主机

    Show Transactions

    SHOW TRANSACTIONS

       事务是在Hive-0.13版本号中引进的。管理员使用该语句查询当前打开或者终止的事务。包含例如以下信息:

    • 事务ID
    • 事务状态
    • 启动事务的用户
    • 事务启动时所在的主机

    Show Compactions

    SHOW COMPACTIONS

       该语句显示当Hive事务被使用时,全部正在被压缩或者预定压缩的表和分区,包含以下的信息:

    • 数据库名称
    • 表名
    •  分区名称(假设存在分区)
    • 主压缩还是次要压缩
    • 压缩的状态:
      • 初始化:在队列中等待压缩
      • 工作:正在被压缩
      • 准备清除:压缩已经结束。旧文件被安排清除
    • 假设处于工作状态,显示压缩线程的线程ID
    •  假设处于工作状态或者准备清除状态。显示压缩開始的时间

    Describe语句

    Describe Database

    DESCRIBE DATABASE db_name

       该语句显示给定数据库的凝视(假设设置的话),在HDFS上的路径和数据库的拥有者。例如以下所看到的:

    hive>describe database learning;
    OK
    learning       hdfs://hadoop:9000/user/hive/warehouse/learning.db hadoop
    Time taken:0.088 seconds, Fetched: 1 row(s)
    hive>describe database default;
    OK
    default  Default Hive database      hdfs://hadoop:9000/user/hive/warehouse      public
    Time taken:0.216 seconds, Fetched: 1 row(s)

    Describe Table/View/Column

    DESCRIBE [EXTENDED|FORMATTED] [db_name.]table_name[DOT col_name ( [DOT field_name] |[DOT '$elem$'] | [DOT '$key$'] | [DOT '$value$'] )* ]

       该语句显示给定表包含分区列在内的全部列,假设使用了extendedkeyword,则以Thrift序列化形式显示表的元数据,假设使用formattedkeyword,则以表格形式显示元数据。

    假设表拥有复合类型的列,能够通过使用表名.复合列名('$elem$'用于数组,'$key$'用于map的键,'$value$'用于map的键值)查看该列的属性。对于视图DESCRIBE EXTENDED or FORMATTED能够用来获取视图的定义。两个相关的属性被提供:由用户指定的原始视图定义和由Hive内部使用的扩展定义。

    Describe Partition

    DESCRIBE [EXTENDED|FORMATTED] [db_name.]table_name PARTITION partition_spec

       该语句显示指定分区列的元数据。

  • 相关阅读:
    简易文法
    词法分析实验报告
    0909上级作业
    vs2008的快捷键
    一道C++笔试题说一些知识
    Effective C++读书笔记
    鼠标拖动物体DEMO
    CFileDialog类的使用以及在非MFC程序下使用MFC的类资源
    3D制作魔方
    使用DXUT框架简单处理鼠标事件
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6708586.html
Copyright © 2011-2022 走看看