Hi all,

I'd like to debug hive program, and want to use the raw java api of
Hive. I know that there's thrift api for hive, but it's not convenient
for me especially for debugging and unit test.
And I notice that the unit test (TestExecDriver) in hive use shim
(call ExecDriver in another process) which is also not convenient for
testing, I did some hacking and finally the following code can execute
successfully ( I create the table before the execution).  so I'd like
to suggest maybe Hive should provide a more simple java api for
user(wrapper based on the Hive internal Java api)  and allow user to
choose not using shim but directly using ExecDriver.

///////////////////////// code snippet
////////////////////////////////////////////////////////////////////////
    HiveConf conf = new HiveConf(ExecDriver.class);
    Driver driver = new Driver(conf);
    driver.compile("select name from test group by name");
    QueryPlan plan = Utilities.deserializeQueryPlan(new
FileInputStream(driver.ctx
        .getLocalScratchDir().substring(5)
        + File.separator + "queryplan.xml"), conf);
    Task task=plan.getRootTasks().get(0);
    ExecDriver eDriver = new ExecDriver((MapredWork)task.getWork(),
        new JobConf(), false);
    eDriver.execute(new DriverContext());

-- 
Best Regards

Jeff Zhang

Reply via email to