zoukankan      html  css  js  c++  java
  • hive 普通创建表和跟新列操作

    创建表

    CREATE TABLE if not exists student (
      student_id int,
      sex int,
      address String,
      email String
    )
    这里需要注意的是,虽然hiveSL类似sql语言,但是他们有很多需要注意的地方,不能直接使用符号,比如“'”,“;”这些,分号,hdfs认为是结束的符号。要使用这些符号的话,需要写成他们ask码的形式
    还有在创建表时,字段的数据类型,不是使用的sql中的类型,类似java中的类型
     
    create table:创建一个指定名字的表
    external 关键字:创建一个外部表,在创建一个外部表时需要给他指定一个指向真实数据的路径(local),在创建一个内部表时,数据会随着你指向的路径儿移动,而创建外部表仅仅记录数据的路径;当删除内部表时:内部表的数据和元数据会随着一起被删除,而删除外部表,就只删除元数据。
    like:格式修饰的create table允许复制一个已经存在的表,但是只是复制表的结构,而不复制表的数据
     
    添加表分区
    create table student_1(
    student_id int,
    sex int comment 'sex:0 gg,1 man',
    address String comment 'address is student Faily address',
    email String
    )
    partitioned by(ds String,country String)//指定分区,按照地市和时间进行分区,此并没有真正的存储列,也就是此列不存在你的数据中
    row format delimited //设置创建表在加载数据的列分割符
    fields terminated by '01'//分割列
    stored as sequencefile//需要压缩数据
    row format delimited:用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。
     
    添加聚类存储
    create table student_2(
    student_id int,
    sex int comment 'sex:0 gg,1 man',
    address String comment 'address is student Faily address',
    email String
    )
    comment 'student_2 table view'
    partitioned by(ds String,country String)
    clustered by(student_id) sorted by (student_id) into 32 buckets//根据sutdent_id进行分区并存储,并对student_id进行排序并放到32个桶中
    row format delimited
    fields terminated by '01'
    stored as sequencefile
    这样组织结构允许用户通过student_id高效的对集群中的列进行采样
     
    修改表的语句 alert(对于已经存在的表)
    alert table student_2 to student_3
    指定存储路径
    create table student_2(
    student_id int,
    sex int comment 'sex:0 gg,1 man',
    address String comment 'address is student Faily address',
    email String
    )
    comment 'student_2 table view'
    partitioned by(ds String,country String)
    clustered by(student_id) sorted by (student_id) into 32 buckets//根据sutdent_id进行分区并存储,并对student_id进行排序并放到32个桶中
    row format delimited
    fields terminated by '01'
    stored as sequencefile
    location '<hdfs路径>' //表数据存在hdfs上目录,也可以是本地目录
    注意:修改表的结构只会对元数据做改变,不会改变数据,用户应该确保元数据的定义和数据结构的一致性
    增加和更新列
    alert table tableName add|replace colunms(col_name col_type col_moent,.......)
    add columns,允许用户在当前列的末尾,未分区之前增加新的列。replace columns删除当前列,增加新的列。只有在
    使用native的serDE在能这么做
     
     
  • 相关阅读:
    21.网络文件共享服务
    20.LANMP架构
    18.自动运维工具ansible
    17.MySQL数据库
    16.DNS服务
    15.系统自动部署
    14.加密技术和安全
    13.系统启动和服务管理
    12.进程管理和计划任务
    11.网络管理和配置
  • 原文地址:https://www.cnblogs.com/zhangXingSheng/p/6223374.html
Copyright © 2011-2022 走看看