通过WebChat访问Hive元数据

网友投稿 845 2022-05-30

WebHcat样例代码

Hive提供了WebHcat接口。该文档利用java把该接口进行了封装,可以使用java代码访问Hive。

代码中只封装了一些常用接口,对于没有其他的接口,可以参考封装好的代码自行进行封装。

通过WebChat访问Hive元数据

1.1      主要难点:

因hive的webHcat接口未提供认证接口,我们这边只能借助spnego的方式来进行kerberos认证。

首先,先进行kerberos认证。认证完成后,获得认证的信息。(Subject对象用于存放认证信息。这是kerberos底层实现,有兴趣可以自行研究下。)

然后,对HTTP进行封装,设置spnego方式需要的配置参数。参考该方法:WebHcatHttpClient。

最后,采用Subject.doas()方法建立认证通道。在该方法内进行所有的业务操作。

1.2      代码介绍:

Body文件夹:webHcat需要用到的一些对象。

Information文件夹:HTTP请求需要的一些类。

比如:

HttpAuthInfo:用于构建HTTP请求。

Kerberos:用于封装kerberos认证需要的信息。

RestApi:WebHcat的接口类。

RestHelper:响应头的解析和json字符串转换。

WebHcatHttpClient:构建spnego的请求。

WebHcat:主类,里面提供了webhcat接口的使用方法。

1.3      样例代码

String user = "lyysxg@HADOOP.COM"; String keytab = "D:\\fwc\\SparkStudy\\src\\main\\resources\\user.keytab"; String krb5Location = "D:\\fwc\\SparkStudy\\src\\main\\resources\\krb5.conf"; InputStream inputStream = null; HttpAuthInfo httpAuthInfo = null; try { inputStream = new FileInputStream(WebHcat.class.getClassLoader().getResource(DEFAULT_CONFIG_FILE).getPath()); Properties p = new Properties(); p.load(inputStream); httpAuthInfo = HttpAuthInfo.newBuilder().setIp(p.getProperty("ip")) .setPort(Integer.valueOf(p.getProperty("port"))) .build(); WebHcatHttpClient client = WebHcatHttpClient.getClient(httpAuthInfo); RestApi api = new RestApi(client); api.login(user, keytab, krb5Location);

User:是用户名。

Keytab:keytab文件的路径。

krb5Location:krb5文件的路径。

api.login(user, keytab, krb5Location):调用认证代码进行认证。

1.     列出所有的数据库---api.searchPath();

2.     获取指定数据库的详细信息。api.searchPath(reqDatabaseBody1);

参数:ReqDatabaseBody对象。

3.     创建数据库api.CreateDataBase(createDataBaBody, "Test1");

参数:CreateDataBaBody对象,为数据库的名字。

4.     创建表,api.CreateTable(reqCreateTableBody, "Test1", "lyysxg1");

参数:ReqCreateTableBody对象,数据库名,表名

5.     查询数据库中的所有,api.searchTable(searchTable);

参数:searchTable对象

6.     重命名表,api.RenameTable("Test1", "lyysxg1", "zwllyysxg");

参数:数据库,表名,新表名

7.     删除表,api.DeleteTable(reqDelTableBody);

参数:ReqDelTableBody对象

8.     删除数据库,api.DeleteDatabase(delete);

参数:DeleteDataBaseBody对象。

运行效果:

1.4      附件

EI企业智能 FusionInsight Hive 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Numba:加速python代码
下一篇:css:box-shadow实现单边,多边阴影
相关文章