前言:
上一个章节,若泽给我们讲的第一堂课Hive,详细的总结了,有关Hive的各种信息,本次课程讲讲Hive的 DDL
修改Hive日志路径
【若泽大数据实战】
在Hive中,默认的日志路径是在/tmp底下,一般Linux或者CentOS系统会一个月自动清理一次tmp底下的东西,所以要将日志进行更换位置。
首先需要cp一份hive-log4j.properties文件,在默认安装好Hive后是没有的。
编辑修改路径
查看日志可以发现Hive的默认底层是MapReduce
hive的环境下,输入代码后发现输入有错误时,想用Backspace删除错误命令时,键盘无反应,操作很简单:
无法删除
【若泽大数据面试题】
Hive的信息存放在哪里?
1、Hive的数据存放在HDFS之上(真实数据)
2、Hive的元数据可以存放在RDBMS之上(元数据)
Database
Hive中包含了多个数据库,默认的数据库为default,无论你是否创建数据库,默认都会存在,对应于HDFS目录是/user/hive/warehouse,可以通过hive.metastore.warehouse.dir参数进行配置(hive-site.xml中配置)
创建一个Hive数据库,查看存储在hdfs的什么路径上
配置完hadoop启动的时候出现如下警告信息:
如果是64位直接在log4j日志中去除告警信息。在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/log4j.properties文件中添加
- log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
现在显示正常,刚刚创建的Hive数据库也存在
DDL(Data Definition Language)
描述Hive表数据的结构:
打开Hive官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
Create Database
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
IF NOT EXISTS:加上这句话代表判断数据库是否存在,不存在就会创建,存在就不会创建(生产中一定要添加IF NOT EXISTS)。 如:create database if not exists dbname;
COMMENT:数据库的描述
LOCATION:创建数据库的地址,不加默认在/user/hive/warehouse/路径下
WITH DBPROPERTIES:数据库的属性
【若泽大数据实战】
【重点】每当我们使用一个Hive中的SQL时,一定要知道这条语句对应的元数据信息是怎么存储的,
创建一张表。一个数据库,注释信息再哪里 DB的存放在哪里,一下我做了详细实验
创建一个数据库指定路径,往库中插入一张表:
hive> create database hive2 LOCATION '/ruozedata_03';
[hadoop@hadoop000 ~]$ hadoop fs -ls /
hive> use hive2; hive> create table b(id int);
查看相关创建后的信息,发现有b表,然后看文件的属性,最前面是一个d,ruozedata_03数据库就是一个文件夹
测试创建一个数据库并给数据库添加加一个备注,增加一些描述的信息,信息是key value
查看刚刚每个创建的数据库的信息
hive> show databases;
hive hdfs://hadoop000:9000/user/hive/warehouse/hive.db(路径) hadoop USER
Time taken: 0.028 seconds, Fetched: 1 row(s)
hive> desc database hive2;
hive2 hdfs://hadoop000:9000/ruozedata_03 (路径) hadoop USERTime taken: 0.09 seconds, Fetched: 1 row(s)
hive> desc database hive2_ruozedata;
hive2_ruozedata this is ruozedata 03 test database(描述信息) hdfs://hadoop000:9000/user/hive/warehouse/hive2_ruozedata.db hadoop USER