我在 kerberos 环境中使用 hadoop,我是 kerberos 的新手。我想使用 java 访问配置单元数据库,我浏览了配置单元官方网站,但他们提供了非常笼统的信息。
请有人给我具体的答案?
最佳答案
我认为 kerbrose 的实现是一个非常庞大的概念,为了一个小任务而完成它可能会很耗时。
这是快速解决您的问题的方法!
要在安全环境中访问 hive ,请考虑以下事项:
- 要访问配置单元,您需要提供特定于该配置单元版本的所有 jar,如配置单元官方网站上的列表所示。
-下一步提供配置单元版本特定的驱动程序名称,例如对于配置单元服务器 2 "org.apache.hive.jdbc.HiveDriver"
- 提供配置单元连接 URL,例如jdbc:hive2://node.addr:10000/default;principal=hive/node.addr@ABCREALM.LOCAL
我们在连接 URL 中提供连接地址和安全认证。对于 kerberos,将有身份验证字符串,这是我们在 kerberos 实现时设置的 kerberos 原则。
此字符串与我们在使用beeline 连接到配置单元服务器时提供的字符串相同,例如beeline -u "jdbc:hive2://node.addr:10000/default;principal=hive/node.addr@ABCREALM.LOCAL"
下面是一段小代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
public class Connect {
private static ResultSet res;
public static void main(String[] args) throws Exception {
Class.forName("org.apache.hive.jdbc.HiveDriver");
System.out.println("Process started at:"+new Date());
Connection con = DriverManager.getConnection("jdbc:hive2://node.addr:10000/default;principal=hive/node.addr@ABCREALM.LOCAL");
Statement stmt = con.createStatement();
stmt.execute("create table testTable (key string,col1 string)");
System.out.println("Table Created successfully");
con.close();
}
}
关于database - 如何使用 java 从安全的 kerberos 环境访问配置单元数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37453769/