配置管理概述
- Hive从<install-dir>/conf/hive-default.xml中读取它的默认配置
- Hive配置目录的位置可以通过设置HIVE_CONF_DIR环境变量的值来改变
- 配置变量可以被改变,通过<install-dir>/conf/hive-site.xml中重新定义(PS:意思就是可以hive-site.xml中的配置项可以覆盖hive-default.xml中同名的配置)
- Log4j配置存储在<install-dir>/conf/hive-log4j.properties
- Hive配置默认继承Hadoop配置变量
- 在hive-site.xml中可以定义任何你需要的配置变量,包括hadoop中的配置变量也是可以定义在这里面的
Hive日志
Hive用log4j记录日志,默认情况下通过命令行操作的日志会输出到控制台。默认的日志级别是INFO。
日志文件存放的目录是/tmp/<user.name>
:
- /tmp/<user.name>/hive.log
通过在$HIVE_HOME/conf/hive-log4j.properties中设置hive.log.dir可以改变日志存放的目录,务必确保该目录的权限是1777
DDL操作
创建Hive表
创建一个表,名字叫做pokes,它有两列,第一列是integer类型,第二列是string类型
创建一个表,名字叫invites。它有两个列和一个名字叫ds的分区列。这个分区列是一个虚的列,它不是表数据的的一部分,它在将一个特别的数据集加载到分区的时候很有用。
DML操作
加载一个文件到pokes表,这个文件有两列,列用ctrl-a分隔。'LOCAL'表示输入文件在本地文件系统,如果'LOCAL'被省略的话,将从HDFS中查找文件。
关键'OVERWRITE'表示如何表中存在数据则会被删除。如果'OVERWRITE'关键字被省略,那么数据文件则会被追加到已有的数据后面。
注意:
- 通过加装命令加装数据的时候不会验证数据是否违背schema
- 如果文件在HDFS中,那么将被移动到Hive所控制的命名空间中
- Hive数据的根目录是在hive-default.xml中hive.metastore.warehouse.dir指定的
上面的两条加载语句分别加载数据到invites表的不同分区中。表invites在创建的时候必须被分区,并且分区的名字叫ds。
上面这条命令从HDFS中加载数据到表中。
注意,从HDFS中加载数据的结果就是移动文件或目录,因此,这个操作非常快。