宜收藏:5款常用的数据分析工具,简单便捷!数据分析工具常见的有哪些?
883
2022-05-30
WebHcat样例代码
Hive提供了WebHcat接口。该文档利用java把该接口进行了封装,可以使用java代码访问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小时内删除侵权内容。