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

  • 相关阅读:
    与众不同 windows phone (50)
    与众不同 windows phone (49)
    重新想象 Windows 8.1 Store Apps (93)
    重新想象 Windows 8.1 Store Apps 系列文章索引
    重新想象 Windows 8.1 Store Apps (92)
    重新想象 Windows 8.1 Store Apps (91)
    重新想象 Windows 8.1 Store Apps (90)
    重新想象 Windows 8.1 Store Apps (89)
    重新想象 Windows 8.1 Store Apps (88)
    重新想象 Windows 8.1 Store Apps (87)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467709.html
Copyright © 2011-2022 走看看