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的数据类型
数据类型长度备注
TINYINT1字节的有符号整数-128~127
SMALLINT2字节的有符号整数–32768~32767
INT4字节的有符号整数-2147483648~2147483647
BIGINT8字节的有符号整数9223372016854775808~9223372036854775807
BOOLEAN布尔类型,true或falsetrue、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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

風珏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值