impala java api 操作_通过Impala thrift API接口进行Impala查询

最近需要做一个通过java提交Impala查询的功能,翻阅了一些资料,可以通过Cloudera Manager提供的API实现Impala查询但是多了一层CM平台,如果CM平台不稳定,很可能会导致Impala查询出错。如果能直接让Impala查询并返回结果是最好的方式了。参考GitHub上一位大佬的代码,网上并没有直接可用的jar包或者java文件,需要通过thrift文件生成java文件,添加l...
摘要由CSDN通过智能技术生成

最近需要做一个通过java提交Impala查询的功能,翻阅了一些资料,可以通过Cloudera Manager提供的API实现Impala查询

6e0e8e44cf53d48b0fa26417ec939293.png

但是多了一层CM平台,如果CM平台不稳定,很可能会导致Impala查询出错。如果能直接让Impala查询并返回结果是最好的方式了。

参考GitHub上一位大佬的代码,网上并没有直接可用的jar包或者java文件,需要通过thrift文件生成java文件,添加libthrift-0.9.1.jar、hive-service.jar、hive-metastore.jar、slf4j.api-1.6.1.jar.zip和commons-lang3-3.3.2-bin.tar.gz依赖,然后就能使用了,其中hive-service和hive-metastore版本根据自己使用情况而定,详细的操作可以看大佬代码中的build.sh文件。

下面是代码示例

submitQuery

public static HashMap submitQuery(String host, int port, String sql, String username, String password) throws Exception {

TSocket transport = new TSocket(host, port, 99999);

TBinaryProtocol protocol = new TBinaryProtocol(transport);

TCLIService.Client client = new ImpalaHiveServer2Service.Client(protocol);

transport.open();

TOpenSessionReq openReq = new TOpenSessionReq();

openReq.setClient_protocol(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V1);

openReq.setUsername(username);

openReq.setPassword(password);

TOpenSessionResp openResp = client.OpenSession(openReq);

// TStatus status = openResp.getStatus();

// if (status.getStatusCode() == TStatusCode.ERROR_STATUS) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值