Hive初识

一、 安装Hive并启动


1. 下载源码包

解压源码包后,配置hive-env.sh
(a)配置 HADOOP_HOME 路径

export HADOOP_HOME=${Hadoop的路径}

(b)配置 HIVE_CONF_DIR 路径

export HIVE_CONF_DIR=${Hive配置文件路径}

2. 启动hadoop


3. 启动Hive客户端

调用bin/hive进入Hive的客户端

启动Hive后会发现Hive源码包中多了derby.logmetastore_db这个就是Hive默认的元数据


4. 创建数据表

在Hive客户端中创建一个数据表,并数据表中插入数据

hive> create table student(id int, name string);
hive> insert into student values(1000,"ss");

此时我们可以发现在hdfs中出现了user/hive/warehouse文件夹下存在一个与表名同名的文件夹,这个文件夹中存储的就是数据表的数据



二、 尝试在文件系统中加载数据


1. 创建测试数据

创建一个student.txt文件(id与姓名之间用tab隔开)

1001    zhangsan
1002    lisi
1003    wangwu

2. 使用load导入数据

在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';

之后重新导入后数据发现可以正常查询了。


3. 通过上传文件导入数据

现在我们再创建一个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元数据至MySQL

我们会发现一个问题同一时间只能启动一个Hive客户端。这就是数据derby数据库的原因,所以我们接下来要将我们的元数据转移到MySQL中,MySQL安装在此不做赘述。


1. 添加MySQL连接驱动

安装好MySQL后,首先我们需要下载mysql连接驱动也就是mysql-connector-java-5.1.47.jar(这个jar包可以在maven的本地仓库中找到,如果之前在maven中使用过这个依赖)文件放入到hive的lib目录中。


2. 配置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中创建了相关的数据库。


3. 创建数据表

然后我们创建一个数据表

hive> create table student1(id int, name string);

这时我们在数据库中的TBLS数据表中会发现我们创建者条数据的记录,在DBS表中可以看到我们的数据库路径。

你可能感兴趣的:(大数据)