zoukankan      html  css  js  c++  java
  • Hive的HQL(2)

    Hive基础(1)

    Hive的HQL(2)

    1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准。但是和SQL的差异为:不支持行级别的操作,不支持事务等。HQL的语法接近于MySQL。

    2. Hive的数据库,本质仅仅是个表的目录或者命名空间。一般用数据库将生产表组织成逻辑组。

    3. Hive中的表–管理表,创建表时未指定的话为默认为管理表。当删除管理表时,Hive将删除管理表中的数据和元数据。

    CREATE TABLE IF NOT EXISTS test.student (
    name    STRING COMMENT 'student name',
    age     INT COMMENT 'student age',
    cource  ARRAY<STRING>,
    body    MAP<STRING,FLOAT>,
    address STRUCT<STRING,CITY:STRING,STATE:STRING>)
    COMMENT 'the info of student'
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '01'
    COLLECTION ITEMS TERMINATED BY '02'
    MAP KEYS TEMINATED BY '03'
    LINES TERMINATED BY '
    '
    STORED AS TEXTFILE
    LOCATION '/user/hive/warehouse/test.db/student';
    • COMMENT注释作用
    • ROW FORMAT DELIMITED等指定数据格式和文件存储格式。
    • LOCATION子句指定该表的存储位置,若不写存储在Hive默认的数据仓库目录中。

    4. Hive中的表–外部表,当数据需要被多个工具(如Pig、Hive)共享时,创建一个外部表明确数据的所有权,Hive只会删除该表的元数据信息,而不会删除该表的数据。

    CREATE EXTERNAL TABLE IF NOT EXISTS test.student(
    name STRING COMMENT,
    age INT COMMENT,
    cource ARRAY<STRING>,
    body MAP<STRING,FLOAT>,
    address STRUCT<STREET:STRING,CITY:STRING,STATE:STRING>)
    LOCATION '/user/test/x'
    • EXTERNAL TABLE 创建一个外部表

    5. Hive中的表–分区表(partition),分区表可以进行水平切分,将表数据按照某种规则进行存储。

    CREATE TABLE student_info(
    student_ID STRING,
    name STRING,
    age INT,
    sex STRING,
    father_name STRING,
    mother_name STRING)
    PARTITIONED BY (province STRING,city STRING);
    • PARTITIONED BY 子句指定表按照学生家庭住址的city和province字段进行分区。
    • /user/hive/warehouse/student_info/province=hebei/city=handan
    • 分区的作用相当和索引类似。
    • Hive安全措施,设置“strict”模式,这样如果针对一个分区表的查询没有对分区进行限制的话,改作业将会被禁止提交。
    • 单独为外部表的分区指定值和存储位置
    ALTER TABLE student_info ADD PARTITION (province = hebei,city = handan) LOCATION 'hdfs://master:9000/student/hebei/handan'
    • 外部分区表被删除,数据不会被删除。

    6. 删除表 DROP TABLE test 或者 DROP TABLE IF EXISTS test

    7. 修改表

    • 表重命名 ALTER TABLE test RENAME TO test2
    • 增加、修改、删除分区
      • 增加分区 ALTER TABLE test ADD PARTITION (x = x1, y = y2) LOCATION ‘/user/test/x1/y1’
      • 修改分区 ALTER TABLE test ADD PARTITION (x = x1, y = y2) SET LOCATION ‘/user/test/x1/y1’
      • 删除分区 ALTER TABLE test ADD DROP PARTITION (x = x1, y = y2)
    • 修改列信息
      ALTER TABLE test
      CHANGE COLUMN id uid INT
      COMMENT ‘the unique id’
      AFTER name;
    • 增加列
      ALTER TABLE test ADD COLUMNS (new_col INT, new_col2 STRING);
    • 删除或者替换列
      ALTER TABLE test REPLACE COLUMNS (new_col INT, new col2 STRING);

    8. HQL的数据操作 LOAD DATA

  • 相关阅读:
    Masonry复杂ScrollView布局
    Masonry scrollview循环布局
    Masonry tableviewCell布局
    Masonry 比例(multipliedBy)
    Masonry自动布局:复合约束
    Masonry整体动画更新约束
    Masonry remake更新约束
    Masonry 动画更新约束
    Masonry基本用法
    Spring Quartz 和 Spring Task使用比较
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467709.html
Copyright © 2011-2022 走看看