HIVE命令及语法

命令帮助hive -H

-d,--define <key=value>          Variable substitution to apply to Hive commands. e.g. -d A=B or --define A=B
--database      Specify the database to use
-e          SQL from command line
-f                     SQL from files
-H,--help                        Print help information
--hiveconf <property=value>   Use value for given property
--hivevar <key=value>         Variable substitution to apply to Hive commands. e.g. --hivevar A=B
-i filename                    Initialization SQL file
-S,--silent                      Silent mode in interactive shell
-v,--verbose                     Verbose mode (echo executed SQL to the console)

  1. hive -e ‘SQL’
    在命令行输入sql运行
  2. hive -f sqlfile
    运行文件中的sql
    就可以写像存储过程一样的一大堆的sql
    例如在
    xxx.sql文件内写一大堆sql
    create table … temp01 select * from emp;
    create table … temp02 select * from dept;
    insert into dws_result
    select * from temp01 letj join temp02…
  3. hive -i
    定义UDF函数

hive语法

hive默认有一个default,对应的HDFS地址为:/user/hive/warehouse
如果我们要新建库的话,就需要使用到库相关语法

库相关语法

  1. create

    CREATE [REMOTE] (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
     [COMMENT database_comment]
     [LOCATION hdfs_path]
     [MANAGEDLOCATION hdfs_path]
     [WITH DBPROPERTIES (property_name=property_value, ...)];
    

    create database test;
    不加location的,对应的hdfs地址为:/user/hive/warehouse/test.db
    删除后重新创建 加上location
    create database test location ‘/dwd/test’;
    hdfs里文件就会放在/dwd/test

  2. drop
    drop database test;
    如果库中有表存在,不允许删除
    如果想要删除这个数据库:

    1. 把所有表全删了
    2. 使用cascade(级联){这里想到hdfs里面创建或者删除级联文件需要加 -p}
      drop database if exists test cascade;(可以理解为级联删除)
  3. use
    use test
    查看库的属性信息
    desc database [extended] test

    查看现在是哪一个库
    select current_database();
    这个也可以通过hive-site.xml设置
    hive.cil.print.current.db

    查看创建库的详细语句
    show create database test;

  1. create
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

create table 创建一个指定名字的表,如果相同名字的表已经存在,抛异常;如果加上 if not exists,则会忽略异常
external(外部的):创建一个外部表,在建表的同事可以指定一个实际存数据的路径(location)
col_name data_type:列名以及对应的数据类型,多列用逗号分割
comment col_comment:列的表述(sal comment ‘薪水’)
comment table_comment:表的描述
例如
emp
comment ‘emp表,存放xxxx信息’

partition by:指定分区 hive中一个重要的概念

clustered by:对于每一个表或者分区,hive可以进一步进变为桶,hive采用对列值进行哈希,
然后除以桶的个数求余的方式决定该条件存放在哪个桶中。
row format:一般是row format DELIMITED FILEDS TERMINATED by ‘,’,指定表存储中列的分隔符 默认是
\001,还可以自定义花里胡哨的其他分隔符
STORED AS:STORED AS SEQUENCEFILE|TEXTFILE|REFILE,
如果是纯文本格式,那就是STORE AS TEXTFILE,
如果数据需要压缩 STROE AS SEQUENCE
location:指定hive表在HDFS上的路径,如果是外部表的话,则需要直接指定一个路径,内部表不需要指定,默认在xml里设置的地方/user/hive/warehouse/*
AS select statement:通过select的sql语句的结果来建表

create table emp(
EMPNO int,
ENAME string,
JOB string,
MGR bigint,
HIREDATE string,
SAL bigint,
COMM bigint,DEPTNO bigint
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’;

create table test0403 like test0330;
可以建表,但是无数据,只能复制表结构

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] AS SQL;
create table test0403_b as select * from test0330;
可以建表,也有数据,表结构也有

  1. 查看表
    show tables
    查看其它库的表
    show tables in default;
    模糊查询表
    show tables like‘test04’;
    查看表的详细信息
    desc [format] test0330;
    查看表的建表语句
    show create table test0330;

  2. LOAD/INSERT

    1. LOAD DATA [LOCAL] INPATH ‘filepath’ [OVERWRITE] INTO TABLE tablename
      [PARTITION] (partcol1=val1,partcol2= val2)
      [LOCAL] 代表本地文件系统,
      INPATH 加载数据的路径
      OVERWRITE 有则覆盖 无则追加
      PARTITION 加载到哪个分区

      LOAD DATA LOCAL INPATH ‘/home/zhangyujie/data/emp.txt’ OVERWRITE INTO TABLE emp;

    2. Insert

      1. insert into table…values()造数据用的多,一般没人这样用
      2. insert overwrite table partition (dt) …select xxx,xxx,xxx from table_a where join group by
  3. 修改表
    修改表明,字段名,增加字段,注释comment ‘xx类型(已废弃)’等
    alter table
    hive里删除一个字段和修改类型是不支持的
    如果硬要删除某个字段,那么就替换掉所有字段
    alter table_a replace colunms(新字段);一般不这么做,可以在字段后面加个注释不去用就行了,表明改字段已作废即可

  4. 删除表
    drop table table_name;
    内部表删除后,表和数据文件均删除
    外部表删除后,表没了,location数据文件还在

  5. 清空表
    truncate table table_name
    外部表不允许truncate,会报错

内部表(MANAGED)VS外部表(EXTERNAL)
有很多不同

  1. 内部表删除后,表和数据文件均删除 ;HDFS和MySQL的数据都被删除
    外部表删除后,表没了,location数据文件还在 ;MySQL中的数据被删除了,但是HDFS文件还在
    外部表不删除数据这个特性,方便数据共享,比如说原始的数据和日志等
    内部表可以作为中间表和结果表

7 STORE AS的含义(官网)
我对官网上内容做简单翻译绘制本表

Storage FormatDescription
STORED AS TEXTFILE存储为纯文本文件
STORED AS SEQUENCEFILE存储为压缩序列文件
STORED AS ORC存储为 ORC 文件格式。 支持 ACID 事务和基于成本的优化器 (CBO)。 存储列级元数据。
STORED AS PARQUET在 Hive 0.13.0 及更高版本中存储为 Parquet 列式存储格式的 Parquet 格式;
在 Hive 0.10、0.11 或 0.12 中使用 ROW FORMAT SERDE … STORED AS INPUTFORMAT … OUTPUTFORMAT 语法 …。
STORED AS AVRO在 Hive 0.14.0 及更高版本中存储为 Avro 格式
STORED AS RCFILE存储为记录列文件格式。
STORED AS JSONFILE在 Hive 4.0.0 及更高版本中存储为 Json 文件格式
STORED BY以非本地表格式存储
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程目录: 第1章:Hive基本架构及环境部署 1.MapReduce分析与SQL分析对比 2.Hive的介绍及其发展 3.Hive的安装部署及启动 4.Hive的基本架构讲解 5.安装MySQL作为元数据库存储 6.配置Hive使用MySQL作为元数据库存储 7.Hive中基本命令的使用 8.Hive中常用的属性配置 9.Hive中常用的交互式命令 10Hive中数据库的管理与使用 11.Hive中表的管理与使用 12.Hive中外部表的使用 第2章:Hive 常用DML、UDF及连接方式 13.Hive中分区表的介绍 14.Hive中分区表的创建及使用 15.Hive中数据导入的6种方式及其应用场景 16.Hive中数据导出的4种方式及表的导入导出 17.Hive中HQL的基本语法(一) 18.Hive中HQL的基本语法(二) 19.Hive中order by、sort by、distribute by与cluster by的使用 20.Hive中分析函数与窗口函数 21.Hive中UDF的介绍 22.Hive中使用自定义UDF实现日期格式转换 23. HiveServer2的介绍及三种连接方式 24.Hive元数据、fetch task和严格模式的介绍 第3章:Sqoop Sqoop及用户行为分析案例 25.CDH版本框架的介绍 26. CDH版本框架的环境部署 27.Sqoop的介绍及其实现原理 28.Sqoop的安装部署及连接测试 29.Sqoop将MySQL数据导入到HDFS(一) 30.Sqoop将MySQL数据导入到HDFS(二) 31.Sqoop中的增量导入与Sqoop job 32.Sqoop将MySQL数据导入Hive表中 33.Sqoop的导出及脚本中使用的方式 34.案例分析-动态分区的实现 35.案例分析-源表的分区加载创建 36.案例分析-指标分析使用Sqoop导出 第4章:Hive复杂用户行为案例分析及优化 37.自动批量加载数据到hive 38.Hive表批量加载数据的脚本实现(一) 39.Hive表批量加载数据的脚本实现(二) 40.HIve中的case when、cast及unix_timestamp的使用 41.复杂日志分析-需求分析 42.复杂日志分析-需求字段讲解及过滤 43.复杂日志分析-字段提取及临时表的创建 44.复杂日志分析-指标结果的分析实现 45.Hive中数据文件的存储格式介绍及对比 46.常见的压缩格式及MapReduce的压缩介绍 47.Hadoop中编译配置Snappy压缩 48.Hadoop及Hive配置支持snappy压缩 49.Hive中的常见调优 50.Hive中的数据倾斜及解决方案-三种join方式 51.Hive中的数据倾斜及解决方案-group by 52.Hive中使用正则加载数据 53. Hive中使用Python脚本进行预处理 第5章:Zeus任务资源调度工具 54.资源任务调度框架介绍 55.企业中常见的任务调度框架 56.Zeus的介绍及基本实现原理 57.Zeus安装部署-基本环境配置 58.Zeus安装部署-配置文件的修改 59.Zeus安装部署-编译打包 60.Zeus平台的调度使用 61.Zeus平台实现任务调度应用(一) 62.Zeus平台实现任务调度应用(二) 63.Zeus平台实现任务调度应用(三)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值