Index: src/java/org/apache/hcatalog/common/HCatUtil.java =================================================================== --- src/java/org/apache/hcatalog/common/HCatUtil.java (revision 1178480) +++ src/java/org/apache/hcatalog/common/HCatUtil.java (working copy) @@ -33,32 +33,32 @@ import java.util.Set; import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.permission.FsAction; +import org.apache.hadoop.hive.common.JavaUtils; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.StorageDescriptor; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; import org.apache.hadoop.hive.thrift.DelegationTokenIdentifier; import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapred.JobClient; +import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapreduce.JobContext; -import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.TokenIdentifier; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenIdentifier; +import org.apache.hadoop.util.ReflectionUtils; import org.apache.hcatalog.data.schema.HCatFieldSchema; import org.apache.hcatalog.data.schema.HCatSchema; import org.apache.hcatalog.data.schema.HCatSchemaUtils; import org.apache.hcatalog.mapreduce.HCatOutputFormat; -import org.apache.hadoop.mapred.JobClient; -import org.apache.hadoop.mapred.JobConf; +import org.apache.hcatalog.storagehandler.HCatStorageHandler; import org.apache.thrift.TException; public class HCatUtil { @@ -300,7 +300,7 @@ Token t = jcl.getDelegationToken(new Text(userName)); // LOG.info("got "+t); return t; - + // return null; } @@ -316,9 +316,9 @@ // ignore if token has already been invalidated. } } - - - public static Token + + + public static Token extractThriftToken(String tokenStrForm, String tokenSignature) throws MetaException, TException, IOException { // LOG.info("extractThriftToken("+tokenStrForm+","+tokenSignature+")"); Token t = new Token(); @@ -328,10 +328,10 @@ return t; } - public static Token + public static Token extractJobTrackerToken(String tokenStrForm, String tokenSignature) throws MetaException, TException, IOException { // LOG.info("extractJobTrackerToken("+tokenStrForm+","+tokenSignature+")"); - Token t = + Token t = new Token(); t.decodeFromUrlString(tokenStrForm); t.setService(new Text(tokenSignature)); @@ -359,14 +359,14 @@ logEntrySet(logger,"logging hiveconf:",hc.getAllProperties().entrySet()); } - + public static void logList(Log logger, String itemName, List list){ logger.info(itemName+":"); for (Object item : list){ logger.info("\t["+item+"]"); } } - + public static void logMap(Log logger, String itemName, Map map){ logEntrySet(logger,itemName,map.entrySet()); } @@ -391,5 +391,23 @@ logger.info("\tkind : "+t.getKind()); logger.info("\tservice : "+t.getService()); } - + + public static HCatStorageHandler getStorageHandler(Configuration conf, + String className) throws HiveException { + + if (className == null) { + return null; + } + try { + Class handlerClass = (Class) Class + .forName(className, true, JavaUtils.getClassLoader()); + HCatStorageHandler storageHandler = (HCatStorageHandler) ReflectionUtils + .newInstance(handlerClass, conf); + return storageHandler; + } catch (ClassNotFoundException e) { + throw new HiveException("Error in loading storage handler." + + e.getMessage(), e); + } + } + }