解压源码包后,配置hive-env.sh
(a)配置 HADOOP_HOME
路径
export HADOOP_HOME=${Hadoop的路径}
(b)配置 HIVE_CONF_DIR
路径
export HIVE_CONF_DIR=${Hive配置文件路径}
调用bin/hive进入Hive的客户端
启动Hive后会发现Hive源码包中多了
derby.log
和metastore_db
这个就是Hive默认的元数据
在Hive客户端中创建一个数据表,并数据表中插入数据
hive> create table student(id int, name string);
hive> insert into student values(1000,"ss");
此时我们可以发现在hdfs中出现了user/hive/warehouse
文件夹下存在一个与表名同名的文件夹,这个文件夹中存储的就是数据表的数据
创建一个student.txt
文件(id与姓名之间用tab隔开)
1001 zhangsan
1002 lisi
1003 wangwu
在hive中执行以下指令
hive> load data local inpath '文件路径' into table student;
此时我们可以发现user/hive/warehouse/student
文件夹下多了一个student.txt文件,所以可以理解这其实就是一个上传操作,但是使用select语句查询时发现查询结果为
NULL NULL
NULL NULL
NULL NULL
这是因为我们在创建表时并未声明文件分隔符,所以我们重新创建数据表,并声明分隔符为’\t’
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
之后重新导入后数据发现可以正常查询了。
现在我们再创建一个student1.txt
1004 zhaoliu
1005 chenba
1006 sunjiu
然后直接上传到hdfs的user/hive/warehouse/student
路径下
之后在查询,可以发现我们上传的student1.txt
文件中的数据也可以查询到了。
在实际开发中,可以选择使用load指令或者直接上传两种方式,如果我们想使用load指令加载hdfs下的数据,同样可以使用load指令,此时可以理解成将该文件移动到数据表所对应的文件之下
hive> load data inpath ‘文件路径’ into table student;
我们会发现一个问题同一时间只能启动一个Hive客户端。这就是数据derby数据库的原因,所以我们接下来要将我们的元数据转移到MySQL中,MySQL安装在此不做赘述。
安装好MySQL后,首先我们需要下载mysql连接驱动也就是mysql-connector-java-5.1.47.jar
(这个jar包可以在maven的本地仓库中找到,如果之前在maven中使用过这个依赖)文件放入到hive的lib目录中。
hive-site.xml
按照官方配置,将下列数据拷贝到文件中
<configuration>
<property>
<name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://hadoop102:3306/metastore?createDatabaseI fNotExist=truevalue>
<description>JDBC connect string for a JDBC metastoredescription>
property>
<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
<description>Driver class name for a JDBC metastoredescription>
property>
<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
<description>username to use against metastore databasedescription>
property>
<property>
<name>javax.jdo.option.ConnectionPasswordname>
<value>000000value>
<description>password to use against metastore databasedescription>
property>
configuration>
配置完毕后,如果启动 hive 异常,可以重启hadoop,此时我们可以看到mysql中创建了相关的数据库。
然后我们创建一个数据表
hive> create table student1(id int, name string);
这时我们在数据库中的TBLS数据表中会发现我们创建者条数据的记录,在DBS表中可以看到我们的数据库路径。