如何在Hive-Site.xml文件中设置hive Metastore连接的配置?

moh*_*rma 5 hadoop hive cloudera impala metastore

我想使用java代码连接MetaStore.我不知道如何在Hive-Site.xml文件中设置配置设置以及我将发布Hive-Site.xml文件的位置.请帮忙.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;

public class HiveMetastoreJDBCTest {

    public static void main(String[] args) throws Exception {

        Connection conn = null;
        try {
            HiveConf conf = new HiveConf();
            conf.addResource(new Path("file:///path/to/hive-site.xml"));
            Class.forName(conf.getVar(ConfVars.METASTORE_CONNECTION_DRIVER));
            conn = DriverManager.getConnection(
                    conf.getVar(ConfVars.METASTORECONNECTURLKEY),
                    conf.getVar(ConfVars.METASTORE_CONNECTION_USER_NAME),
                    conf.getVar(ConfVars.METASTOREPWD));

            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(
                "select t.tbl_name, s.location from tbls t " +
                "join sds s on t.sd_id = s.sd_id");
            while (rs.next()) {
                System.out.println(rs.getString(1) + " : " + rs.getString(2));
            }
        }        

    }
}
Run Code Online (Sandbox Code Playgroud)

Raj*_*h N 3

在hive-site.xml中添加以下行:

<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hivepass</value>
</property>
Run Code Online (Sandbox Code Playgroud)

其中jdbc:mysql://localhost:3306/hive3306是你的默认mysql端口;hive是我们的 hive 元存储的 mysql 数据库名称。更改hiveuser为您的 mysql hive 用户名和hivepassmysql hive 密码。

如果您尚未在 mysql 中为 hive Metastore 创建数据库,请在终端中执行此步骤:

mysql -u root -p

输入您的 mysql 根密码。

mysql> create database hive;

mysql> create user 'hiveuser'@'%' IDENTIFIED BY 'hivepass';

mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepass';

mysql> flush privileges;

这里,hiveuserhivepass分别是您为 hive Metastore 提供的用户名和密码。

注意:您需要在$HIVE_HOME/lib$HADOOP_HOME/lib中有mysql-jdbc-connector.jar