1. 程式人生 > >hive 操作(二)——使用 mysql 作為 hive 的metastore

hive 操作(二)——使用 mysql 作為 hive 的metastore

hive 預設使用 derby 作為對映表(SQL 操作對映為MapReduce Job,將SQL中建立的表對映為 hdfs 的檔案/資料夾,欄位對映為其中的行),但 derby 的一大缺陷在於它不允許多個客戶端同時執行sql操作(可能新版本的hive會有所升級)。

我們又知hive的metastore,除了derby,還可存放於 mysql 中;

CentOS mysql 的安裝 一文,我們介紹了 CentOS 中 mysql 的安裝。

使用 mysql 作為 hive 的metastore

使用 hive 連線 mysql 其實意味著使用 JDBC 來連線,不妨再來看一下,hive的體系結構(hive 在hadoop的基礎上,既提供了命令列的介面,輸入hive進入,也提供了JDBC/ODBC的連線介面,當然還有一套Web GUI):


這裡寫圖片描述
  • (1)把 mysql 的 jdbc 驅動(mysql-connector-java-5.1.10.jar)放置到 hive 的 lib 目錄下;

  • (2)修改$HIVE_HOME/conf下的 hive-site.xml(由mv hive-default.xml.template hive-site.xml而來)

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true</value
    >
    </property> # 如果資料庫不存在的話 # 建立資料庫名為hive的資料庫 <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> # 設定驅動 <property
    >
    <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> # 使用者名稱 <property> <name>javax.jdo.option.ConnectionPassword</name> <value>admin</value> </property> # 登入密碼
  • (3)遠端登入(使用Navicat for Mysql)登入此節點上的mysql(主機名hadoop0,使用者名稱root,密碼admin,如前所設),會在Navicat 中發現建立的資料庫hive,其內的表DBS的 DB_LOCATION_URI(也即指向的路徑),為hdfs://hadoop0:9000/hive(此路徑由hive-site.xml中的hive.metastore.warehouse.dir所決定)。