If it is only for debugging, http://wiki.apache.org/hadoop/Hive/DeveloperGuide#Debugging_Hive_code provide a way to debug unit test in local mode.
On May 13, 2010, at 2:57 AM, Jeff Zhang wrote: > 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