Como faço uma chamada assíncrona para o Hive em Java?

Eu gostaria de executar uma consulta Hive no servidor de maneira assíncrona. A consulta do Hive provavelmente levará muito tempo para ser concluída, portanto, prefiro não bloquear a chamada. Atualmente, estou usando o Thirft para fazer uma chamada de bloqueio (blocos em client.execute ()), mas não vi um exemplo de como fazer uma chamada sem bloqueio. Aqui está o código de bloqueio:

        TSocket transport = new TSocket("hive.example.com", 10000);
        transport.setTimeout(999999999);
        TBinaryProtocol protocol = new TBinaryProtocol(transport);
        Client client = new ThriftHive.Client(protocol);
        transport.open();
        client.execute(hql);  // Omitted HQL

        List<String> rows;
        while ((rows = client.fetchN(1000)) != null) {
            for (String row : rows) {
                // Do stuff with row
            }
        }

        transport.close();

Faltam blocos try / catch no código acima para mantê-lo curto.

Alguém tem alguma idéia de como fazer uma chamada assíncrona? O Hive / Thrift pode apoiá-lo? Existe uma maneira melhor?

Obrigado!

questionAnswers(6)

yourAnswerToTheQuestion