diff --git hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java index 899ccce..23ea2ee 100644 --- hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java +++ hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java @@ -35,6 +35,7 @@ import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.mapred.TableOutputFormat; +import org.apache.hadoop.hbase.mapreduce.TableInputFormatBase; import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Bytes; @@ -53,7 +54,6 @@ import org.apache.hadoop.hive.ql.plan.TableDesc; import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.SerDe; -import org.apache.hadoop.hive.serde2.SerDeException; import org.apache.hadoop.mapred.InputFormat; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.OutputFormat; @@ -153,9 +153,8 @@ public void preCreateTable(Table tbl) throws MetaException { String tableName = getHBaseTableName(tbl); Map serdeParam = tbl.getSd().getSerdeInfo().getParameters(); String hbaseColumnsMapping = serdeParam.get(HBaseSerDe.HBASE_COLUMNS_MAPPING); - List columnsMapping = null; - columnsMapping = HBaseSerDe.parseColumnsMapping(hbaseColumnsMapping); + List columnsMapping = HBaseSerDe.parseColumnsMapping(hbaseColumnsMapping); HTableDescriptor tableDesc; @@ -378,9 +377,19 @@ private void addHBaseDelegationToken(Configuration conf) throws IOException { @Override public void configureJobConf(TableDesc tableDesc, JobConf jobConf) { try { - TableMapReduceUtil.addDependencyJars(jobConf); - org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(jobConf, - HBaseStorageHandler.class, org.apache.hadoop.hbase.HBaseConfiguration.class); + TableMapReduceUtil.addDependencyJars(jobConf, + HBaseStorageHandler.class, TableInputFormatBase.class, + // explicitly pull a class from each module + org.apache.hadoop.hbase.HConstants.class, // hbase-common + org.apache.hadoop.hbase.protobuf.generated.ClientProtos.class, // hbase-protocol + org.apache.hadoop.hbase.client.Put.class, // hbase-client + org.apache.hadoop.hbase.CompatibilityFactory.class, // hbase-hadoop-compat + // pull necessary dependencies + org.apache.zookeeper.ZooKeeper.class, + org.jboss.netty.channel.ChannelFactory.class, + com.google.protobuf.Message.class, + com.google.common.collect.Lists.class, + org.cloudera.htrace.Trace.class); } catch (IOException e) { throw new RuntimeException(e); }