1. 程式人生 > >Hive 學習

Hive 學習

rmi vax tail pan ive XML 數據 mys 一行

在 hive-site.xml 中配置元數據存儲。這裏使用了 http://blog.csdn.net/reesun/article/details/8556078 中提到的一種方式。

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.2.231:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</
description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name
>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</
value> <description>password to use against metastore database</description> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> <property> <name>hive.metastore.uris</name> <value>thrift://ubuntu1:9083</value> <description>Thrift URI for remote metastore</description> </property>

啟動 Hive 前,需要啟動 Hadoop

進入 Hive 的 bin 目錄, 啟動 metastore 服務(上面配置的Mysql,需要把 mysql jdbc 的jar 包放到 hive 的 lib 目錄下):

hive --service metastore >metastore.log 2>& 1& 後臺運行,日誌寫入到當前目錄下的 metastore.log 中

服務啟動後運行: ./hive 等一會後,會進入 hive 的命令終端。然後就可以運行 hql 了。

使用下面的步驟創建表:

1. 創建Database: create database testhive;

2. 使用剛創建的 db: use testhive;

3. 創建一張表: create table emp(
        name string,
        age int,
        salary int,
        deptCd string
        ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘ lines terminated by ‘\n‘;

上面 TERMINATED BY ‘,‘ 表示各個字段之間使用逗號分隔。

Hive 的元數據信息存在數據庫中(本例中是 mysql 數據庫),真正的數據是存在 HDFS 上的。上面的 emp 表在HDFS 上就是一個文件,上面創建的表中的一條記錄其實就是文件中的一行,各字段的值用 TERMINATED BY 指定的字符分開。

4. 往表中加載一些數據: load data local inpath ‘/home/shj/emp.txt‘ into table emp;

進行一些表的操作的時候,遇到了問題。 select * from emp; 能正確運行,顯示出了表中的記錄。但是運行 select count(1) from emp; 時,程序一直卡在那不動。後來查了一下,才發現還需要啟動 Hadoop 的 YARN。 Hive 把 hql 轉化成了 Hadoop 的 Map-Reduce 的任務,需要運行在 YARN 上。

Hive 學習