欢迎投稿

今日深度:

hive语法,

hive语法,


  • 创建数据库
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 BUCKETS
      ROW 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_ins
INSERT OVERWRITE TABLE hive_table_1 SELECT * WHERE id = 1
INSERT OVERWRITE TABLE hive_table_2 SELECT * WHERE id = 2;
  • 表操作
-- 复制表
CREATE TABLE hive_table_bak
ROE FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORE AS TEXTFILE
AS 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_table
partition(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 正则匹配

www.htsjk.Com true http://www.htsjk.com/hive/40844.html NewsArticle hive语法, 创建数据库 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...
相关文章
    暂无相关文章
评论暂时关闭