hive语法

来源:互联网 发布:java数据库 编辑:程序博客网 时间:2024/06/06 01:17
  • 创建数据库
CREATE DATABASE IF NOT EXISTS hive;SHOW DATABASES;SHOW CREATE DATABASE hive;DESCRIBE DATABASE hive;
  • 删除数据库
DROP DATABASE IF EXISTS hive CASCADE;
  • 创建表

    • 创建普通表

      CREATE TABLE IF NOT EXISTS hive_table(    id INT COMMENT 'This is id of hive_table',    age INT COMMENT'This is age of hive_table',    name STRING COMMENT 'This is name of hive_table')COMMENT 'This is hive_table'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORED AS TEXTFILE;CREATE TABLE hive_table AS SELECT * FROM hive;CREATE TABLE hive_table LIKE hive;SHOW TABLES '*table';SHOW CREATE TABLE hive_table;DESCRIBE hive_table;DESCRIBE FORMATTED hive_table
    • 创建外部表

      CREATE EXTERNAL TABLE IF NOT EXISTS hive_table(    id INT,    age INT,    name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORED AS TEXTFILE;
    • 创建分区表(PARTITIONED)

      CREATE TABLE IF NOT EXISTS hive_table(    id INT,    age INT,    name STRING)PARTITIONED BY(date STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORE AS TEXTFILE;
    • 创建分筒表(BUCKETS)

      CREATE TABLE IF NOT EXISTS hive_table(    id INT,    age INT,    name STRING)CLUSTERED BY (age) SORTED BY (name) INTO 16 BUCKETSROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORE AS TEXTFILE; 
  • 修改表
-- 修改表名ALTER TABLE hive_table RENAME TO hive_table_new;--添加字段ALTER TABLE hive_table ADD COLUMNS(tall INT);--修改字段ALTER TABLE hive_table REPLACE COLUMNS(tall int);--删除表DROP TABLE IF EXISTS hive_table;
  • 插入数据
INSERT OVERWRITE TABLE hive_table SELECT * FROM hive_table_ins;INSERT VOERWRITE TABLE hive_table PARTITION(date='20161020')SELECT * FROM hive_table_inc;FROM hive_table_insINSERT OVERWRITE TABLE hive_table_1 SELECT * WHERE id = 1INSERT OVERWRITE TABLE hive_table_2 SELECT * WHERE id = 2;
  • 表操作
-- 复制表CREATE TABLE hive_table_bakROE FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORE AS TEXTFILEAS SELECT * FROM hive_table;-- 克隆表CREATE TABLE hive_table_temp like hive_table;-- 备份表(备份到hdfs上)EXPORT TABLE hive_table PARTITION(date='2016-10-10')to '/home/user/data_bak.txt';-- 还原表IMPORT TABLE hive_table_new FROM '/home/user/data_bak.txt';
  • 导入数据
-- 普通表导入本地数据load data local inpath '/home/user/data.txt'overwrite into table hive_table;-- 普通表导入HDFS数据load data inpath 'hdfs://namenode:9000/user/hive/'overwrite into table hive_table;-- 分区表load data local inpath '/home/user/data.txt'overwrite into table hive_tablepartition(date='2016-10-20');-- 分桶表CREATE TABLE hive_table_buckets(    id INT,    age INT,    name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORE AS TEXTFILE;LOAD DATA LOCAL INPATH '/home/user/data.txt'INTO TABLE hive_table_buckets;set hive.enforce.bucketing = ture;INSERT OVERWRITE TABLE hive_table SELECT * FROM hive_table_buckets;
  • 导出数据
INSERT OVERWRITE LOCAL DIRECTORY '/home/user/data.txt'SELECT * FROM hive_table;
  • Hive的数据类型
数据类型 长度 备注 TINYINT 1字节的有符号整数 -128~127 SMALLINT 2字节的有符号整数 –32768~32767 INT 4字节的有符号整数 -2147483648~2147483647 BIGINT 8字节的有符号整数 9223372016854775808~9223372036854775807 BOOLEAN 布尔类型,true或false true、false FLOAT 单精度浮点数 DOUBLE 双精度浮点数 STRING 字符串 TIMESTAMP 整数 BINARY 字节数组 DATE 日期 0000-01-01~9999-12-31,常用STRING代替
  • JOIN

    • 只支持等值连接
    • 连接谓词中不支持or
  • LEFT SEMI-JOIN(左半开连接)

  • WHERE条件
    A <=> B 当A和B都为NULL的时候返回true,其他和=一样
    A LINK B %一个或多个字符 _一个字符
    A RLIKE B 正则匹配

0 0