Hadoop学习笔记之Hive基本操作

本文介绍了在Hive中的基本操作,包括执行shell和hdfs命令,详细阐述了DDL操作如数据库和表的创建、修改,以及DML操作中的数据加载与导出。重点讲解了动态分区表的创建、加载和查看,以及桶表和分区加分桶的概念与实现。
摘要由CSDN通过智能技术生成

1 在Hive中的命令

1.1 执行shell命令

  • 在命令前加 "! "
  • 以 “;” 作为结尾
hive> ! ls /home;
zjt
hive> ! pwd;
/home/zjt

1.2 执行hdfs命令

  • 使用 “hds” 代替 “hadoop fs”
  • 以 “;” 作为结尾
hive> dfs -ls /;
Found 6 items
-rw-r--r--   2 zjt supergroup         26 2019-03-19 19:24 /sort.txt
drwxr-xr-x   - zjt supergroup          0 2019-03-15 18:13 /test
drwx------   - zjt supergroup          0 2019-03-20 17:20 /tmp
-rw-r--r--   2 zjt supergroup         40 2019-03-19 18:15 /unique.txt
drwxr-xr-x   - zjt supergroup          0 2019-03-14 12:22 /user
-rw-r--r--   2 zjt supergroup         43 2019-03-19 16:23 /words.txt

hive> dfs -put /home/zjt/words.txt /data;

1.3 DDL操作

1.3.1 对数据库的操作

//查看数据库
hive> show databases;
OK
default
Time taken: 0.985 seconds, Fetched: 1 row(s)

//创建数据库
//若数据库存在会抛出异常
//可使用"if not exists"不抛出异常
hive> create database ducl;
OK
Time taken: 0.268 seconds
hive> create database ducl;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database ducl already exists
hive> create database if not exists ducl;
OK
Time taken: 0.007 seconds

//模糊查找数据库
hive> show databases like 'ducl*';
OK
ducl
ducl_2019
ducl_test
Time taken: 0.022 seconds, Fetched: 3 row(s)

//查看数据库描述信息
hive> describe database ducl;
OK
ducl		hdfs://master:9000/user/hive/warehouse/ducl.db	zjt	USER	
Time taken: 0.022 seconds, Fetched: 1 row(s)

//查看Hive家目录下的信息
hive> dfs -ls /user/hive/warehouse/;
Found 3 items
drwxr-xr-x   - zjt supergroup          0 2019-03-21 10:20 /user/hive/warehouse/ducl.db
drwxr-xr-x   - zjt supergroup          0 2019-03-21 10:20 /user/hive/warehouse/ducl_2019.db
drwxr-xr-x   - zjt supergroup          0 2019-03-21 10:20 /user/hive/warehouse/ducl_test.db

//删除数据库
//若要删除含有表的数据库,需要末尾加上 "cascade" 关键字
hive> drop database ducl_test;
OK
Time taken: 0.432 seconds
hive> show databases;
OK
default
ducl
ducl_2019
Time taken: 0.015 seconds, Fetched: 3 row(s)

//使用数据库
hive> use ducl;
OK
Time taken: 0.033 seconds

1.3.2 对表的操作

  • 创建表
  • 内部表被删除时,元数据信息和表数据都会被删除
  • 外部表被删除时,只会删除元数据信息
  • 分区表分为静态分区表和动态分区表
//创建内部表
hive> create table student(
    > id int,
    > name string,
    > age int)
    > row format delimited
    > fields terminated by '\t'  //字段分隔符设置
    > stored as textfile;
OK
Time taken: 0.531 seconds

//查看表的详细信息
hive> show create table student;
OK
CREATE TABLE `student`(
  `id` int, 
  `name` string, 
  `age` int)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY '\t' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://master:9000/user/hive/warehouse/ducl.db/student'
TBLPROPERTIES (
  'transient_lastDdlTime'='1553136204')
Time taken: 0.511 seconds, Fetched: 14 row(s)

//创建外部表
hive> create external table student2(
    > id int,
    > name string,
    > age int)
    > row format delimited
    > fields terminated by '\t'
    > stored as textfile
    > location '/ducl/student2'; //指定存储路径,路径不存在会自动创建
OK
Time taken: 0.068 seconds

//查看数据库中的表信息
hive> show tables;
OK
student
student2
Time taken: 0.027 seconds, Fetched: 2 row(s)

//创建分区表
hive> create table student3(
    > id int,
    > name string,
    > age int)
    > partitioned by (sex string)
    > row format delimited
    > fields terminated by '\t'
    > stored as textfile;
OK
Time taken: 0.094 seconds

//创建分桶表
hive> create table student4(
    > id int,
    > name string,
    > age int)
    > clustered by (id) sorted by (id desc)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值