iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Hive中DDL和DML的示例分析
  • 285
分享到

Hive中DDL和DML的示例分析

2023-06-02 23:06:19 285人浏览 八月长安
摘要

这篇文章主要为大家展示了“Hive中DDL和DML的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hive中DDL和DML的示例分析”这篇文章吧。Hive构建在hadoop之上:&nbs

这篇文章主要为大家展示了“Hive中DDL和DML的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hive中DDL和DML的示例分析”这篇文章吧。

Hive构建在hadoop之上:
             Hive的数据存放在hdfs之上
             Hive的元数据可以存放在RDBMS之上
一、DDL:Data Defination Language
    1.1 Hive创建数据库的语法:
        CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
        [COMMENT database_comment]      --  数据库注释
        [LOCATION hdfs_path]     --  数据库存放在hdfs上的路径 默认: /user/hive/warehouse/
        [WITH DBPROPERTIES (property_name=property_value, ...)];

    1.2 Hive创建的数据库默认存放路径:/user/hive/warehouse/.db
    1.3 default是Hive中默认的一个数据库。
    1.4 Hive删除数据库的语法:
        DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
        其中CASCADE关键字表示强制删除。
        DROP DATABASE IF EXISTS gw_db CASCADE;
        删除一个数据库,默认情况下,hive不允许删除含有表的数据库,要先将数据库中的表清空才能drop,否则会报错
        hive> drop database users;
        FaiLED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.         InvalidOperationException(message:Database gw_db is not empty. One or more tables exist.)
        hive> DROP DATABASE IF EXISTS gw_db CASCADE;  --  加入CASCADE关键字,可以强制删除一个数据库
        OK
        Time taken: 2.292 seconds

    1.5 Hive数据库使用的命令:
                create      创建数据库
                alter        修改数据库
                drop        删除数据库
                show databases;  显示所有表数据库      
                desc  database xxx; 查看数据库信息      
                use         切换数据库

二、Data Manipulation Language
    2.1 Hive建表语法:
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
 
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  LIKE existing_table_or_view_name
  [LOCATION hdfs_path];
 
data_type
  : primitive_type
  | array_type
  | map_type
  | struct_type
  | uNIOn_type  -- (Note: Available in Hive 0.7.0 and later)
 
primitive_type
  : TINYINT
  | SMALLINT
  | INT
  | BIGINT
  | BOOLEAN
  | FLOAT
  | DOUBLE
  | DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)
  | STRING
  | BINARY      -- (Note: Available in Hive 0.8.0 and later)
  | TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)
  | DECIMAL     -- (Note: Available in Hive 0.11.0 and later)
  | DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)
  | DATE        -- (Note: Available in Hive 0.12.0 and later)
  | VARCHAR     -- (Note: Available in Hive 0.12.0 and later)
  | CHAR        -- (Note: Available in Hive 0.13.0 and later)
 
array_type
  : ARRAY < data_type >
 
map_type
  : MAP < primitive_type, data_type >
 
struct_type
  : STRUCT < col_name : data_type [COMMENT col_comment], ...>
 
union_type
   : UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and later)
 
row_format
  : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
        [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
  | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
 
file_format:
  : SEQUENCEFILE
  | TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)
  | RCFILE      -- (Note: Available in Hive 0.6.0 and later)
  | ORC         -- (Note: Available in Hive 0.11.0 and later)
  | PARQUET     -- (Note: Available in Hive 0.13.0 and later)
  | AVRO        -- (Note: Available in Hive 0.14.0 and later)
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
 
constraint_specification:
  : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ]
    [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE

       常用的基本数据类型:
                数值类型:int bigint  float  double  decimal
                字符串类型:string
    2.2 分隔符
        行: \n
        列: \001   我们看到的是:^A  

    2.3  创建表
        建ruozedata_emp表:
       hive> use ruozedata;
        hive> create table  if not exists ruozedata_emp 
            > (empno int, ename string, job string, mgr int, hiredate string, salary double, comm double, deptno int)
            > ROW FORMAT DELIMITED 
            > FIELDS TERMINATED BY '\t' ;
        OK
        Time taken: 0.262 seconds

        查看ruozedata_emp表信息:
        hive> desc formatted ruozedata_emp;
        OK
        # col_name            data_type           comment             
         
        empno               int                                    
        ename               string                                  
        job                 string                                  
        mgr                 int                                    
        hiredate            string                                  
        salary              double                                  
        comm                double                                  
        deptno              int                                    
         
        # Detailed Table Information  
        Database:           ruozedata                -- 数据库名
        Owner:              hadoop                  -
        CreateTime:         Thu Jun 21 13:20:31 CST 2018      -- 创建时间
        LastAccessTime:     UNKNOWN              
        Protect Mode:       None                 
        Retention:          0                    
        Location:           hdfs://hadoop002:9000/ruozedata_03/ruozedata_emp      -- 存储在hdfs上的路径
        Table Type:         MANAGED_TABLE       -- 表类型默认为 内部表   
        Table Parameters:  
        transient_lastDdlTime1529558431          
         
        # Storage Information  
        SerDe Library:      org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe 
        InputFormat:        org.apache.hadoop.mapred.TextInputFormat 
        OutputFormat:       org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 
        Compressed:         No                   
        Num Buckets:        -1                   
        Bucket Columns:     []                   
        Sort Columns:       []                   
        Storage Desc Params:  
        field.delim         \t                  
        serialization.format\t            
        Time taken: 0.184 seconds, Fetched: 34 row(s)

    2.4  加载数据文件到表:
            LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
        filepath:文件路径
        [LOCAL]:
                    local: 从本地文件系统加载数据到hive表
                    非local:从HDFS文件系统加载数据到hive表
        [OVERWRITE]:
                    OVERWRITE: 加载数据到表的时候数据的处理方式,覆盖
                    非OVERWRITE:追加
        [PARTITION (partcol1=val1, partcol2=val2 ...)]:指定分区

        加载数据到ruozedata_emp表:
        hive> LOAD DATA LOCAL INPATH '/home/hadoop/data/emp.txt' OVERWRITE INTO TABLE ruozedata_emp;
        Loading data to table ruozedata.ruozedata_emp
        Table ruozedata.ruozedata_emp stats: [numFiles=1, numRows=0, totalSize=652, rawDataSize=0]
        OK
        Time taken: 1.053 seconds
       查看ruozedata_emp表里的数据:
        hive> select * from ruozedata_emp;
        OK
        7839KINGPRESIDENTNULL1981-11-175000NULL10
        7844TURNERSALESMAN76981981-09-081500030
        7876ADAMSCLERK77881987-05-231100NULL20
        7900JAMESCLERK76981981-12-03950NULL30
        7902FORDANALYST75661981-12-033000NULL20
        7934MILLERCLERK77821982-01-231300NULL10
        7369SMITHCLERK79021980-12-17800NULL20
        7499ALLENSALESMAN76981981-02-20160030030
        7521WARDSALESMAN76981981-02-22125050030
        7566JONESMANAGER78391981-04-022975NULL20
        7654MARTINSALESMAN76981981-09-281250140030
        7698BLAKEMANAGER78391981-05-012850NULL30
        7782CLARKMANAGER78391981-06-092450NULL10
        7788SCOTTANALYST75661987-04-193000NULL20
        Time taken: 0.205 seconds, Fetched: 15 row(s)

         查看hdfs上的文件:
        [hadoop@hadoop002 app]$ hadoop fs -ls hdfs://hadoop002:9000/ruozedata_03/ruozedata_emp
        18/06/21 13:51:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
        Found 1 items
        -rwxr-xr-x   1 hadoop supergroup        652 2018-06-21 13:25 hdfs://hadoop002:9000/ruozedata_03/ruozedata_emp/emp.txt
        查看emp.txt文件的内容:
        [hadoop@hadoop002 app]$ hadoop fs -text  hdfs://hadoop002:9000/ruozedata_03/ruozedata_emp/emp.txt
        18/06/21 13:52:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
        7839KINGPRESIDENTNULL1981-11-175000NULL10
        7844TURNERSALESMAN76981981-09-081500030
        7876ADAMSCLERK77881987-05-231100NULL20
        7900JAMESCLERK76981981-12-03950NULL30
        7902FORDANALYST75661981-12-033000NULL20
        7934MILLERCLERK77821982-01-231300NULL10
        7369SMITHCLERK79021980-12-17800NULL20
        7499ALLENSALESMAN76981981-02-20160030030
        7521WARDSALESMAN76981981-02-22125050030
        7566JONESMANAGER78391981-04-022975NULL20
        7654MARTINSALESMAN76981981-09-281250140030
        7698BLAKEMANAGER78391981-05-012850NULL30
        7782CLARKMANAGER78391981-06-092450NULL10
        7788SCOTTANALYST75661987-04-193000NULL20
        [hadoop@hadoop002 app]$ 

    2.5 使用其他方式创建表
        用现有表创建一个新表,包括表结构和数据,这个过程要走mr
        CREATE table ruozedata_emp2 as select * from ruozedata_emp;

        用现有表创建一个新表,仅仅只有表结构,没有数据,这个过程要走mr
        CREATE table ruozedata_emp3 as select * from ruozedata_emp  where 1=2;

        用现有表创建一个新表,仅仅只有表结构,没有数据,不走mr
        CREATE table ruozedata_emp4 like ruozedata_emp;
  
    2.6  修改表名
        ALTER TABLE table_name RENAME TO new_table_name;

    2.7 删除表数据
       DELETE FROM tablename [WHERE expression];   -- 删除表数据
       TRUNCATE TABLE table_name [PARTITION partition_spec];  -- 清空表

    2.8 删除表
       DROP TABLE [IF EXISTS] table_name [PURGE]; 

   2.9  Hive表常用的命令:
           create                创建表 
           alter                   修改表
           drop                   删除表
           show tables         显示当前数据库的所有表 
           show create table  XXX; 显示xxx表的创建信息
           desc  [formatted]  查看表信息

以上是“Hive中DDL和DML的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Hive中DDL和DML的示例分析

本文链接: https://www.lsjlt.com/news/231742.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hive中DDL和DML的示例分析
    这篇文章主要为大家展示了“Hive中DDL和DML的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hive中DDL和DML的示例分析”这篇文章吧。Hive构建在Hadoop之上:&nbs...
    99+
    2023-06-02
  • MySQL中DDL和DML的示例分析
    这篇文章将为大家详细讲解有关MySQL中DDL和DML的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、DDL        可能有看官老爷会问,什么是D...
    99+
    2023-06-22
  • DML和DDL的对比分析
    小编给大家分享一下DML和DDL的对比分析,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!DDL:数据库定义语言,用来创建数据库,创建表格等。DML:数据库管理语言,如增删改查语句等 。DCL:...
    99+
    2024-04-02
  • MySQL中DML语句的示例分析
    这篇文章将为大家详细讲解有关MySQL中DML语句的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DML操作是指对数据库中表记录的操作,主要包括表记录的插入(in...
    99+
    2024-04-02
  • SQL中DDL操作的示例分析
    这篇文章给大家分享的是有关SQL中DDL操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、数据库对象    表&...
    99+
    2024-04-02
  • Hive中Map端JOIN的示例分析
    小编给大家分享一下Hive中Map端JOIN的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Map端JOINmap端join适用于当一张表很小(可以存在内...
    99+
    2023-06-04
  • procedure和functon后ddl操作的示例分析
    这篇文章给大家分享的是有关procedure和functon后ddl操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 SQL>&n...
    99+
    2024-04-02
  • MySQL中DML语言操作的示例分析
    这篇文章主要介绍MySQL中DML语言操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!补充说明,外键:不要使用外键,一切外键概念都在应用层解决。补充说明,数据库的列,也就...
    99+
    2024-04-02
  • Hive中谓词下推的示例分析
    这篇文章将为大家详细讲解有关Hive中谓词下推的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。谓词下推默认生成的执行计划会在可见的位置执行过滤器,但在某些情况下,某些过滤器表达式可以被推到更接近首...
    99+
    2023-06-02
  • 数据库中分区维护DDL导致DML异常中断举例分析
    这篇文章主要讲解了“数据库中分区维护DDL导致DML异常中断举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中分区维护DDL导致DML异常中断举...
    99+
    2024-04-02
  • HIVE中Sqoop1.4.6安装、hive与oracle表互导的示例分析
    这篇文章主要为大家展示了“HIVE中Sqoop1.4.6安装、hive与oracle表互导的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HIVE中Sqoop1.4.6安装、hive与o...
    99+
    2023-06-03
  • Hive中向量化查询的示例分析
    这篇文章主要介绍了Hive中向量化查询的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。向量化Hive中的向量化查询执行大大减少了典型...
    99+
    2024-04-02
  • Hive数据存储的示例分析
    小编给大家分享一下Hive数据存储的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先,Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非...
    99+
    2023-06-03
  • Hive中静态分区与动态分区的示例分析
    这篇文章给大家分享的是有关Hive中静态分区与动态分区的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样查询时使用分区列进行...
    99+
    2023-06-02
  • Hive架构设计及原理的示例分析
    这篇文章给大家分享的是有关Hive架构设计及原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hive架构设计及原理1.什么是Hive:Hive是构建在Hadoop之上的数据仓库平台,可以结构化的数据文...
    99+
    2023-06-03
  • hive架构及知识体系的示例分析
    这篇文章主要介绍了hive架构及知识体系的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Hive架构与基本组成Hive的体系结构可以分为以下几部分:  &n...
    99+
    2023-06-02
  • Javascript中 “&” 和 “|” 的示例分析
    这篇文章主要为大家展示了“Javascript中 “&” 和 “|” 的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Javascript中 “...
    99+
    2024-04-02
  • Apache教程Hudi与Hive集成手册的示例分析
    小编给大家分享一下Apache教程Hudi与Hive集成手册的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. Hudi表对应的Hive外部表介绍Hud...
    99+
    2023-06-29
  • Redis中RDB和AOF的示例分析
    这篇文章将为大家详细讲解有关Redis中RDB和AOF的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis 有两种持久化方案,RDB (Redis Data...
    99+
    2024-04-02
  • html5中drag和drop的示例分析
    小编给大家分享一下html5中drag和drop的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!定义和用法在拖放的过程中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作