zoukankan      html  css  js  c++  java
  • DDL、DML基础

    DDL

    1.创建数据库,为了避免数据库已存在,加上if not exists判断,并且指定数据库在HDFS上存放的位置

    create database if not exists XXX location '/XXX.db';
    

    2.删除数据库,如果数据库不为空,可以采用cascade强制删除

    drop database if exists XXX cascade;
    

    3.hive建表最好限定规则

    create table stu2(
    name string,
    friends array<string>,
    children map<string,int>,
    address struct<street:string,city:string>
    ) 
    row format delimited 
    fields terminated by '	'
    collection items terminated by '_'   #数据分隔符
    map keys terminated by ':'
    lines terminated by '
    ';
    

    4.管理表

    • 默认创建的表都是管理表,即内部表。管理表不适合和其他工具共享数据。
    • 内部表->外部表
    alter table x1 set tblproperties('EXTERNAL'='TRUE');
    
    5.分区表
    - 本质上就是分文件
    ```bash
    create table xxx(
    id int
    )
    partitioned by (time string)
    row format delimited 
    fields terminated by '	';
    
    • 查看分区、分区结构
    show partitions tablename;
    desc formatted tablename;
    
    • 增加分区
    alter table xxx add partition(time=t1) partition(time=t2);
    
    • 删除分区
    alter table xxx drop partition(time=t1),partition(time=t2);
    

    分区表注意事项
    1.创建二级分区表

    create table xxx(
    id int
    )
    partitioned by (time string,id int)
    row format delimited 
    fields terminated by '	';
    

    2.数据直接上传到hdfs对应目录后,修复元数据信息,否则用hql语句查询不到刚插入的数据。或者直接用load数据到分区文件夹,此时元数据信息一并更新就不必在更新了

    msck repair table tablename;
    或者
    alter table xxx add partition(time=t3,id =0)#跟自己直接上传至hdfs的文件夹路径一致
    

    DML

    1.向表中添加数据(load)
    2.插入数据(以分区表为例)

    单张表
    insert into(overwrite) table xxx partition(time=t1,id=0) values(1,"xiaoming");
    多张表
    from X1 
    insert overwrite table X1 partition(time='t1')
    select id,name where time='t2'
    insert overwrite table X1 partition(time='t3')
    select id,name where time='t4'
    

    3.创建表时添加数据,一般情况下都是以hdfs上的数据为基准,映射一张表

    create table tablename(id int) location '/..../..'
    

    4.insert导出数据

    insert overwrite local directory '/../../..'
    row format delimited fields terminated by '	'
    select * from xxx;
    

    5.也可以用hadoop的-get命令获取对应路径的数据导出

  • 相关阅读:
    Yantai
    Star War
    douban's woshang
    cannot change font's type in coreldraw
    LuXun said
    WaiTan
    free ubuntu disk前天就收到了寄来的光盘
    Winter Swimming
    before buy laptop买本本前,先来看看
    ubuntu beginer
  • 原文地址:https://www.cnblogs.com/zqzhen/p/12894539.html
Copyright © 2011-2022 走看看