• Hive DDL常见操作


    • Hive数据模型图
      在这里插入图片描述

    Hive中DDL的使用

    • Hive SQL(HQL)与标准SQL的语法大同小异,基本相同。
    • HQL中create语法(尤其create table)是重点。建表是否成功直接关乎到数据文件是否映射成功,进而影响后续是否可以基于SQL进行数据分析。

    Hive数据库介绍

    • 在Hive中,默认的数据库叫做default,存储数据位置位于HDF的/user/hive/warehouse下。
    • 用户自己创建的数据库存储位置是/user/hive/warehouse/database_name.db下。

    Hive数据库的操作

    • 创建数据库
    #基本语法
    CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
    [COMMENT database_comment]
    [LOCATION hdfs_path]
    [WITH DBPROPERTIES (property_name=property_value, ...)];
    
    #COMMENT:数据库的注释说明语句
    #LOCATION:指定数据库在HDFS存储位置,默认/user/hive/warehouse/dbname.db
    #WITH DBPROPERTIES:用于指定一些数据库的属性配置。
    
    #示例
    CREATE DATABASE IF NOT EXISTS test
    COMMENT "this is my first db"
    WITH dbproperties ('createdBy'='Cauchy');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    • 选择特定(切换)数据库
    #基本语法
    USE DATABASE
    
    #示例
    USE test
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 删除数据库
      • 默认行为是RESTRICT,这意味着仅在数据库为空时才删除它。
      • 要删除带有表的数据库(不为空的数据库),我们可以使用CASCADE。
    #基本语法
    DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
    
    #示例
    DROP DATABASE test;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Hive创建表操作

    • 创建表
    #基本语法
    CREATE TABLE [IF NOT EXISTS] [db_name.]table_name
    (col_name data_type [COMMENT col_comment], ... )
    [COMMENT table_comment]
    [ROW FORMAT DELIMITED …];
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    数据类型

    • Hive数据类型指的是表中列的字段类型;
    • 原生数据类型(primitive data type)和复杂数据类型(complex data type)。
    • 最常用的数据类型是字符串String和数字类型Int。

    分隔符指定

    • ROW FORMAT DELIMITED语法用于指定字段之间等相关的分隔符,这样Hive才能正确的读取解析数据。
    • 只有分隔符指定正确,解析数据成功,我们才能在表中看到数据。
    • LazySimpleSerDe是Hive默认的,包含4种子语法,分别用于指定字段之间、集合元素之间、map映射 kv之间、换行的分隔符号。
      在这里插入图片描述

    默认分隔符

    • Hive建表时如果没有row format语法指定分隔符,则采用默认分隔符;
    • 默认的分割符是’\001’,是一种特殊的字符,使用的是ASCII编码的值,键盘是打不出来的。
    • vim编辑器里显示为^A,一些文本编辑器里显示SOH。

    创建表的示例

    1. 创建表
    create database if not exists wangzhe;
    use wangzhe;
    
    create table t_archer(
    	id int comment "ID",
    	name string comment "英雄名称",
    	hp_max int comment "最大生命",
    	mp_max int comment "最大法力",
    	attack_max int comment "最高物攻",
    	defense_max int comment "最大物防",
    	attack_range string comment "攻击范围",
    	role_main string comment "主要定位",
    	role_assist string comment "次要定位"
    ) comment "王者荣耀射手信息"
    row format delimited
    fields terminated by "\t";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    1. 将数据文件传入hdfs中
      在这里插入图片描述
     hadoop fs -put archer.txt /user/hive/warehouse/wangzhe.db/t_archer
    
    • 1

    在这里插入图片描述

    • 验证数据
    SELECT * FROM t_archer;
    
    • 1

    在这里插入图片描述

    Hive show语法

    • 显示所有数据库 SCHEMAS和DATABASES的用法 功能一样
    show databases;
    show schemas;
    
    • 1
    • 2

    在这里插入图片描述

    • 显示当前数据库所有表
    show tables;
    SHOW TABLES [IN database_name]; --指定某个数据库
    
    • 1
    • 2

    在这里插入图片描述

    • 查询显示一张表的元数据信息
    desc formatted t_team_ace_player;
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    python 替换字符串中 windows非法字符 到对应的 全角合法字符
    数据分析Pandas专栏---第三章<Pandas合并list和字典>
    【Pandas数据处理100例】(八十七):Pandas使用get_dummies构建哑变量
    [篇五章二]_使用 USB 系统安装盘在真机上安装激活 Windows 10 LTSC 2021 中文企业版系统
    华为云GaussDB打造金融行业坚实数据底座,共创数字金融新未来
    使用interface化解一场因操作系统不同导致的编译问题
    pytest的使用
    实现最简的内核模块
    念一句咒语 AI 就帮我写一个应用,我人麻了...
    JAVA 读写文件(InputStream,FileReader)
  • 原文地址:https://blog.csdn.net/sinat_31854967/article/details/126065982