我想用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));
}
}
}
}
2条答案
按热度按时间ukxgm1gy1#
在hive-site.xml中添加以下行:
在
jdbc:mysql://localhost:3306/hive
,3306
是默认的mysql端口;hive
是配置单元元存储的mysql数据库名称。改变hiveuser
您的mysql配置单元用户名和hivepass
你的mysql配置单元密码。如果尚未在mysql中为配置单元元存储创建数据库,请在terminal中执行此步骤:
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;
在这里,hiveuser
以及hivepass
是您分别为配置单元元存储提供的用户名和密码。注意:您需要在$hive\u home/lib和$hadoop\u home/lib中安装mysql-jdbc-connector.jar
z2acfund2#
关于hive-site.xml,这里是来自我的测试机器的示例。这是用于在本地主机上安装mysql服务器的情况下设置配置单元元存储的。
这个文件你需要放进去
<system_path>/apache-hive-x.xx.x-bin/conf
目录我不知道如何在java中使用这个文件。但通过在java代码中指定连接字符串,您可以按如下所示执行