hive简单命令记录

 查看数据库

show databases;

创建数据库

create database sms_data;

删除数据库

DROP DATABASE IF EXISTS sms_data;

使用数据库

use 名称

显示数据库中的表

show tables;

显示表的详细信息

desc 名称;
describe 名称;


show create table t1;
详情
CREATE TABLE `t1`(
  `id` int, 
  `name` string, 
  `hobby` array<string>, 
  `add` map<string,string>)
PARTITIONED BY ( 
  `pt_d` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'colelction.delim'='-', 
  'field.delim'=',', 
  'mapkey.delim'=':', 
  'serialization.format'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://hadooptest02:8020/user/hive/warehouse/database_name.db/t1'
TBLPROPERTIES (
  'transient_lastDdlTime'='1565747871')

删除表语句

DROP TABLE IF EXISTS table_name PURGE;
PURGE: 直接删除,不移入回收站

简单的表创建

create table tb_test(name string, age int);

创建带分区表

CREATE TABLE if not exists test_partition ( id int,name string,age int)
PARTITIONED BY (date_id string)

设置分区命令

alter table t3 add partition(pt_d='201806');

查看分区

show partition t3

显示当前数据库

select current_database();

在命令行显示当前数据库

set hive.cli.print.current.db=true;
INSERT OVERWRITE TABLE employees
PARTITION (country = '中国', state = '北京')
SELECT * FROM staged_employees se
WHERE se.cnty = '中国' AND se.st = '北京';
由于使用了OVERWRITE关键字,目标表中原来相同partition中的所有数据被覆盖,如果目标表中没有partition,则整个表会被覆盖。
如果把OVERWRITE关键字删掉,或者替换成INTO,则hive会追加而不是替代原分区或原表中的数据,这个特性在Hive v0.8.0之后才支持。

获取表数据位置

desc formatted table_name;

获取表内容

desc 表名

插入数据

insert into t1(eid,name) values(1208,'jack')


这里插入的是data.txt文本中的内容
load data  inpath '/data/data.txt' into table employee1;

data.txt文件内容
1206	tom	5000	Proof reader

插入partition数据

insert into test_partition partition(date_id="15785858585") values(1,"aaa",12);

动态分区表必须配置的参数 

 set hive.exec.dynamic.partition =true(默认false),表示开启动态分区功能
    set hive.exec.dynamic.partition.mode = nonstrict(默认strict),表示允许所有分区都是动态的,否则必须有静态分区字段

 动态分区相关的调优参数   

 set  hive.exec.max.dynamic.partitions.pernode=100 (默认100,一般可以设置大一点,比如1000)

       表示每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。

   set hive.exec.max.dynamic.partitions =1000(默认值) 

       表示一个动态分区语句可以创建的最大动态分区个数,超出报错

   set hive.exec.max.created.files =10000(默认) 全局可以创建的最大文件个数,超出报错。

根据设置的partition查询数据

select * from test_partition where date_id="15785858585";
date_id是我设置的partition,15785858585是我设置的partition值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值