[TOC]
# Hive命令行
## 语法结构
~~~
hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e query-string>] [-S]
~~~
说明:
1. -i 从文件初始化HQL。
2. -e从命令行执行指定的HQL
3. -f 执行HQL脚本
4. -v 输出执行的HQL语句到控制台
5.` -p <port> connect to Hive Server on port number `
6. `-hiveconf x=y Use this to set hive/hadoop configuration variables`.
## 具体实例
~~~
//查询指定的结果
hive -e "select * from collection.t_array";
//将查询的结果导入导入到一个文件
hive -e "select * from collection.t_array" >> t_3;
//把sql写进这个sql文件
hive -f sql
~~~
我们把这个当做配置文件
~~~
[root@master ~]# cat cof
set mapred.reduce.tasks=4;
~~~
然后启动下
~~~
hive -i cof
~~~
除了显示结果,还显示执行的sql
~~~
hive -v -e "select * from collection.t_array";
~~~
指定启动时候的配置参数
~~~
hive -hiveconf mapred.reduce.tasks=4
~~~
# Hive参数配置方式
Hive参数大全:
`https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties`
开发Hive应用时,不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率,或帮助定位问题。然而实践中经常遇到的一个问题是,为什么设定的参数没有起作用?这通常是错误的设定方式导致的。
对于一般参数,有以下三种设定方式:
* 配置文件
* 命令行参数
* 参数声明
配置文件:Hive的配置文件包括
* 用户自定义配置文件:`$HIVE_CONF_DIR/hive-site.xml `
* 默认配置文件:`$HIVE_CONF_DIR/hive-default.xml `
**用户自定义配置会覆盖默认配置**
另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置
**配置文件的设定对本机启动的所有Hive进程都有效**
**命令行参数**:
启动Hive(客户端或Server方式)时,可以在命令行添加`-hiveconf param=value`来设定参数,例如:
~~~
bin/hive -hiveconf hive.root.logger=INFO,console
~~~
**这一设定对本次启动的Session(对于Server方式启动,则是所有请求的Sessions)有效**
**参数声明:**
可以在HQL中使用SET关键字设定参数,例如:
~~~
set mapred.reduce.tasks=100;
~~~
**这一设定的作用域也是session级的**
每个reducer task任务处理的数据量。默认为1G
~~~
set hive.exec.reducers.bytes.per.reducer=<number>
~~~
设置reducers task的最大个数
~~~
set hive.exec.reducers.max=<number>
~~~
设置reduce task的任务数
~~~
set mapred.reduce.tasks=<number>
~~~
总结:
**上述三种设定方式的优先级依次递增。即参数声明覆盖命令行参数,命令行参数覆盖配置文件设定。注意某些系统级的参数,例如log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在Session建立以前已经完成了**
- linux
- 常用命令
- 高级文本命令
- 面试题
- redis
- String
- list
- hash
- set
- sortedSet
- 案例-推荐
- java高级特性
- 多线程
- 实现线程的三种方式
- 同步关键词
- 读写锁
- 锁的相关概念
- 多线程的join
- 有三个线程T1 T2 T3,保证顺序执行
- java五种线程池
- 守护线程与普通线程
- ThreadLocal
- BlockingQueue消息队列
- JMS
- 反射
- volatile
- jvm
- IO
- nio
- netty
- netty简介
- 案例一发送字符串
- 案例二发送对象
- 轻量级RPC开发
- 简介
- spring(IOC/AOP)
- spring初始化顺序
- 通过ApplicationContextAware加载Spring上下文
- InitializingBean的作用
- 结论
- 自定义注解
- zk在框架中的应用
- hadoop
- 简介
- hadoop集群搭建
- hadoop单机安装
- HDFS简介
- hdfs基本操作
- hdfs环境搭建
- 常见问题汇总
- hdfs客户端操作
- mapreduce工作机制
- 案列-单词统计
- 局部聚合Combiner
- 案列-流量统计(分区,排序,比较)
- 案列-倒排索引
- 案例-共同好友
- 案列-join算法实现
- 案例-求topN(分组)
- 自定义inputFormat
- 自定义outputFormat
- 框架运算全流程
- mapreduce的优化方案
- HA机制
- Hive
- 安装
- DDL操作
- 创建表
- 修改表
- DML操作
- Load
- insert
- select
- join操作
- 严格模式
- 数据类型
- shell参数
- 函数
- 内置运算符
- 内置函数
- 自定义函数
- Transform实现
- 特殊分割符处理
- 案例
- 级联求和accumulate
- flume
- 简介
- 安装
- 常用的组件
- 拦截器
- 案例
- 采集目录到HDFS
- 采集文件到HDFS
- 多个agent串联
- 日志采集和汇总
- 自定义拦截器
- 高可用配置
- 使用注意
- sqoop
- 安装
- 数据导入
- 导入数据到HDFS
- 导入关系表到HIVE
- 导入表数据子集
- 增量导入
- 数据导出
- 作业
- 原理
- azkaban
- 简介
- 安装
- 案例
- 简介
- command类型单一job
- command类型多job工作流flow
- HDFS操作任务
- mapreduce任务
- hive脚本任务
- hbase
- 简介
- 安装
- 命令行
- 基本CURD
- 过滤器查询
- 系统架构
- 物理存储
- 寻址机制
- 读写过程
- Region管理
- master工作机制
- 建表高级属性
- 与mapreduce结合
- 协处理器
- 点击流平台开发
- 简介
- storm
- 简介
- 安装
- 集群启动及任务过程分析
- 单词统计
- 并行度
- ACK容错机制
- ACK简介