use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class FunctionSerializer method writeTo.
@Override
public void writeTo(JsonWriter writer, ReplicationSpec additionalPropertiesProvider) throws SemanticException, IOException {
TSerializer serializer = new TSerializer(new TJSONProtocol.Factory());
List<ResourceUri> resourceUris = new ArrayList<>();
for (ResourceUri uri : function.getResourceUris()) {
Path inputPath = new Path(uri.getUri());
if ("hdfs".equals(inputPath.toUri().getScheme())) {
FileSystem fileSystem = inputPath.getFileSystem(hiveConf);
Path qualifiedUri = PathBuilder.fullyQualifiedHDFSUri(inputPath, fileSystem);
String checkSum = ReplChangeManager.checksumFor(qualifiedUri, fileSystem);
String newFileUri = ReplChangeManager.encodeFileUri(qualifiedUri.toString(), checkSum);
resourceUris.add(new ResourceUri(uri.getResourceType(), newFileUri));
} else {
resourceUris.add(uri);
}
}
Function copyObj = new Function(this.function);
if (!resourceUris.isEmpty()) {
assert resourceUris.size() == this.function.getResourceUris().size();
copyObj.setResourceUris(resourceUris);
}
try {
// This is required otherwise correct work object on repl load wont be created.
writer.jsonGenerator.writeStringField(ReplicationSpec.KEY.REPL_SCOPE.toString(), "all");
writer.jsonGenerator.writeStringField(ReplicationSpec.KEY.CURR_STATE_ID.toString(), additionalPropertiesProvider.getCurrentReplicationState());
writer.jsonGenerator.writeStringField(FIELD_NAME, serializer.toString(copyObj, UTF_8));
} catch (TException e) {
throw new SemanticException(ErrorMsg.ERROR_SERIALIZE_METASTORE.getMsg(), e);
}
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class TestHiveMetaStore method testSimpleFunction.
@Test
public void testSimpleFunction() throws Exception {
String dbName = "test_db";
String funcName = "test_func";
String className = "org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper";
String owner = "test_owner";
final int N_FUNCTIONS = 5;
PrincipalType ownerType = PrincipalType.USER;
int createTime = (int) (System.currentTimeMillis() / 1000);
FunctionType funcType = FunctionType.JAVA;
try {
cleanUp(dbName, null, null);
for (Function f : client.getAllFunctions().getFunctions()) {
client.dropFunction(f.getDbName(), f.getFunctionName());
}
createDb(dbName);
for (int i = 0; i < N_FUNCTIONS; i++) {
createFunction(dbName, funcName + "_" + i, className, owner, ownerType, createTime, funcType, null);
}
// Try the different getters
// getFunction()
Function func = client.getFunction(dbName, funcName + "_0");
assertEquals("function db name", dbName, func.getDbName());
assertEquals("function name", funcName + "_0", func.getFunctionName());
assertEquals("function class name", className, func.getClassName());
assertEquals("function owner name", owner, func.getOwnerName());
assertEquals("function owner type", PrincipalType.USER, func.getOwnerType());
assertEquals("function type", funcType, func.getFunctionType());
List<ResourceUri> resources = func.getResourceUris();
assertTrue("function resources", resources == null || resources.size() == 0);
boolean gotException = false;
try {
func = client.getFunction(dbName, "nonexistent_func");
} catch (NoSuchObjectException e) {
// expected failure
gotException = true;
}
assertEquals(true, gotException);
// getAllFunctions()
GetAllFunctionsResponse response = client.getAllFunctions();
List<Function> allFunctions = response.getFunctions();
assertEquals(N_FUNCTIONS, allFunctions.size());
assertEquals(funcName + "_3", allFunctions.get(3).getFunctionName());
// getFunctions()
List<String> funcs = client.getFunctions(dbName, "*_func_*");
assertEquals(N_FUNCTIONS, funcs.size());
assertEquals(funcName + "_0", funcs.get(0));
funcs = client.getFunctions(dbName, "nonexistent_func");
assertEquals(0, funcs.size());
// dropFunction()
for (int i = 0; i < N_FUNCTIONS; i++) {
client.dropFunction(dbName, funcName + "_" + i);
}
// Confirm that the function is now gone
funcs = client.getFunctions(dbName, funcName);
assertEquals(0, funcs.size());
response = client.getAllFunctions();
allFunctions = response.getFunctions();
assertEquals(0, allFunctions.size());
} catch (Exception e) {
System.err.println(StringUtils.stringifyException(e));
System.err.println("testConcurrentMetastores() failed.");
throw e;
} finally {
silentDropDatabase(dbName);
}
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class TestFunctions method testGetFunctionNoSuchFunctionInThisDatabase.
@Test(expected = NoSuchObjectException.class)
public void testGetFunctionNoSuchFunctionInThisDatabase() throws Exception {
// Choosing the 2nd function, since the 1st one is duplicated in the dummy database
Function function = testFunctions[1];
client.getFunction(OTHER_DATABASE, function.getFunctionName());
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class TestFunctions method testDropFunctionNoSuchDatabase.
@Test(expected = NoSuchObjectException.class)
public void testDropFunctionNoSuchDatabase() throws Exception {
// Choosing the 2nd function, since the 1st one is duplicated in the dummy database
Function function = testFunctions[1];
client.dropFunction("no_such_database", function.getFunctionName());
}
use of org.apache.hadoop.hive.metastore.api.Function in project hive by apache.
the class TestFunctions method testGetFunctionNoSuchFunction.
@Test(expected = NoSuchObjectException.class)
public void testGetFunctionNoSuchFunction() throws Exception {
// Choosing the 2nd function, since the 1st one is duplicated in the dummy database
Function function = testFunctions[1];
client.getFunction(function.getDbName(), "no_such_function");
}
Aggregations