Улей - JobTracking? - PullRequest
       19

Улей - JobTracking?

1 голос
/ 29 июня 2011

Я прошел через методы, но я не могу понять, как экстраполировать% выполненных (например, EventListener!) Заданий в Hive. Пожалуйста помоги! РЕДАКТИРОВАТЬ - Я думал, что вы можете получить «Я сделал отображение ... так что я на 50% завершен» от клиента (если бы я должен был отправить команду OVERWRITE EXTERNAL TABLE) OpsCenter с Brisk (от Datastax) делает именно это.

import java.util.List;

import org.apache.hadoop.hive.metastore.api.MetaException;
import org.apache.hadoop.hive.service.HiveServerException;
import org.apache.hadoop.hive.service.ThriftHive;
import org.apache.hadoop.hive.service.ThriftHive.Client;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;

public class Hive {

    static Client client;
    static TSocket transport;

    public static void main(String args[]) throws HiveServerException,
            TException, MetaException {

        transport = new TSocket("hiveserver",
                10000);
        transport.setTimeout(999999999);

        TBinaryProtocol protocol = new TBinaryProtocol(transport);
        client = new ThriftHive.Client(protocol);
        transport.open();

        System.out.println("Starting map job...");

        Thread mapReduceThread = new Thread(new HiveQuery(
                "SELECT COUNT(*) FROM myHiveTable"));
        mapReduceThread.start();

        System.out.println("Waiting on map...");
    }

    private static class HiveQuery implements Runnable {

        private String hql;

        public HiveQuery(String hql) {
            this.setHql(hql);
        }

        public void run() {
            long start = System.currentTimeMillis();

            // Blocking
            try {
                client.execute(this.getHql());
            } catch (HiveServerException e) {
                e.printStackTrace();
            } catch (TException e) {
                e.printStackTrace();
            }

            List<String> responseList = null;
            try {
                responseList = client.fetchAll();
            } catch (HiveServerException e) {
                e.printStackTrace();
            } catch (TException e) {
                e.printStackTrace();
            }

            long elapsedTimeMillis = System.currentTimeMillis() - start;
            float elapsedTime = elapsedTimeMillis / 1000F;

            System.out.println("Job took: " + elapsedTime + " seconds");

            for (String response : responseList) {
                System.out.println("Response: " + response);
            }

            transport.close();
            System.out.println("Closed transport");
            System.exit(0);
        }

        public void setHql(String hql) {
            this.hql = hql;
        }

        public String getHql() {
            return hql;
        }
    }

}

1 Ответ

0 голосов
/ 29 июня 2011

Что вы подразумеваете под экстраполяцией?

Я не думаю, что вы можете вывести что-либо из числа завершенных% в Hadoop, за исключением того факта, что если оно возрастет, то будет проделано больше работы.Вы не можете сказать «о, это значит, что у меня осталось 20 секунд» или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...