public SerDeInfoWrapper(SerDeInfo serDeInfo) { this.serDeInfo = serDeInfo; this.name = serDeInfo.getName(); this.serializationLib = serDeInfo.getSerializationLib(); this.parameters = serDeInfo.getParameters(); }
@Override public void addSerde(SerDeInfo serde) throws AlreadyExistsException, MetaException { boolean committed = false; try { openTransaction(); if (getMSerDeInfo(serde.getName()) != null) { throw new AlreadyExistsException("Serde with name " + serde.getName() + " already exists"); } MSerDeInfo mSerde = convertToMSerDeInfo(serde); pm.makePersistent(mSerde); committed = commitTransaction(); } finally { if (!committed) { rollbackTransaction(); } } }
public Object getFieldValue(_Fields field) { switch (field) { case NAME: return getName(); case SERIALIZATION_LIB: return getSerializationLib(); case PARAMETERS: return getParameters(); case DESCRIPTION: return getDescription(); case SERIALIZER_CLASS: return getSerializerClass(); case DESERIALIZER_CLASS: return getDeserializerClass(); case SERDE_TYPE: return getSerdeType(); } throw new IllegalStateException(); }
@Override public void add_serde(SerDeInfo serde) throws TException { startFunction("create_serde", ": " + serde.getName()); Exception ex = null; boolean success = false; RawStore ms = getMS(); try { ms.openTransaction(); ms.addSerde(serde); success = ms.commitTransaction(); } catch (MetaException|AlreadyExistsException e) { LOG.error("Caught exception creating serde", e); ex = e; throw e; } finally { if (!success) { ms.rollbackTransaction(); } endFunction("create_serde", success, ex); } }
@Test(expected = NoSuchObjectException.class) public void mapSerDeNoSuchSchema() throws TException { SerDeInfo serDeInfo = new SerDeInfo(uniqueSerdeName(), "lib", Collections.emptyMap()); client.mapSchemaVersionToSerde(DEFAULT_CATALOG_NAME, DEFAULT_DATABASE_NAME, uniqueSchemaName(), 1, serDeInfo.getName()); }
private MSerDeInfo convertToMSerDeInfo(SerDeInfo ms) throws MetaException { if (ms == null) { throw new MetaException("Invalid SerDeInfo object"); } return new MSerDeInfo(ms.getName(), ms.getSerializationLib(), ms.getParameters(), ms.getDescription(), ms.getSerializerClass(), ms.getDeserializerClass(), ms.getSerdeType() == null ? 0 : ms.getSerdeType().getValue()); }
@Test(expected = NoSuchObjectException.class) public void mapSerDeNoSuchSchemaVersion() throws TException { SerDeInfo serDeInfo = new SerDeInfo(uniqueSerdeName(), "lib", Collections.emptyMap()); ISchema schema = new ISchemaBuilder() .setSchemaType(SchemaType.AVRO) .setName(uniqueSchemaName()) .build(); client.createISchema(schema); client.mapSchemaVersionToSerde(DEFAULT_CATALOG_NAME, DEFAULT_DATABASE_NAME, schema.getName(), 3, serDeInfo.getName()); }
client.addSerDe(serDeInfo); client.mapSchemaVersionToSerde(DEFAULT_CATALOG_NAME, DEFAULT_DATABASE_NAME, schema.getName(), schemaVersion.getVersion(), serDeInfo.getName()); schemaVersion = client.getSchemaVersion(DEFAULT_CATALOG_NAME, DEFAULT_DATABASE_NAME, schema.getName(), schemaVersion.getVersion()); Assert.assertEquals(serDeInfo.getName(), schemaVersion.getSerDe().getName()); Assert.assertEquals(serDeName, schemaVersion.getSerDe().getName()); client.mapSchemaVersionToSerde(DEFAULT_CATALOG_NAME, DEFAULT_DATABASE_NAME, schema.getName(), 2, serDeInfo.getName()); schemaVersion = client.getSchemaVersion(DEFAULT_CATALOG_NAME, DEFAULT_DATABASE_NAME, schema.getName(), 2); Assert.assertEquals(serDeInfo.getName(), schemaVersion.getSerDe().getName());
private void verifyPartitionSharedSD(Table table, String name, List<String> values, int index) throws Exception { Partition part = client.getPartition(table.getDbName(), table.getTableName(), name); Assert.assertNotNull(part); Assert.assertEquals(table.getTableName(), part.getTableName()); List<String> partValues = part.getValues(); Assert.assertEquals(values.size(), partValues.size()); Assert.assertTrue(partValues.containsAll(values)); Assert.assertEquals(table.getDbName(), part.getDbName()); Assert.assertEquals(DEFAULT_CREATE_TIME, part.getLastAccessTime()); Assert.assertEquals(DEFAULT_PARAM_VALUE + index, part.getParameters().get(DEFAULT_PARAM_KEY + index)); Assert.assertFalse(part.getParameters().keySet().contains(table.getParameters().keySet())); StorageDescriptor sd = part.getSd(); Assert.assertNotNull(sd); Assert.assertEquals("TestInputFormat", sd.getInputFormat()); Assert.assertEquals("TestOutputFormat", sd.getOutputFormat()); Assert.assertEquals("sharedSDPartSerde", sd.getSerdeInfo().getName()); Assert.assertEquals("testSDParamValue", sd.getParameters().get("testSDParamKey")); Assert.assertEquals( metaStore.getWarehouseRoot() + "/" + TABLE_NAME + "/sharedSDTest/partwithoutsd" + index, sd.getLocation()); Assert.assertTrue(metaStore.isPathExists(new Path(sd.getLocation()))); }
sd.getOutputFormat()); Assert.assertEquals("The serdeInfo name is not correct.", "partserde" + index, sd.getSerdeInfo().getName()); Assert.assertEquals( "The parameter map of the partition's storage descriptor should contain the partsdkey - partsdvalue pair.",
sd.getOutputFormat()); Assert.assertEquals("The serdeInfo name is not correct.", "partserde" + index, sd.getSerdeInfo().getName()); Assert.assertEquals( "The parameter map of the partition's storage descriptor should contain the partsdkey - partsdvalue pair.",
client.addSerDe(serDeInfo); client.mapSchemaVersionToSerde(catName, dbName, schema.getName(), schemaVersion.getVersion(), serDeInfo.getName()); schemaVersion = client.getSchemaVersion(catName, dbName, schema.getName(), schemaVersion.getVersion()); Assert.assertEquals(serDeInfo.getName(), schemaVersion.getSerDe().getName()); Assert.assertEquals(serDeName, schemaVersion.getSerDe().getName()); client.mapSchemaVersionToSerde(catName, dbName, schema.getName(), 2, serDeInfo.getName()); schemaVersion = client.getSchemaVersion(catName, dbName, schema.getName(), 2); Assert.assertEquals(serDeInfo.getName(), schemaVersion.getSerDe().getName());
Assert.assertNotNull("The serdeInfo attribute should not be null.", serdeInfo); Assert.assertNull("The default value of the serde's name attribute should be null.", serdeInfo.getName()); Assert.assertEquals("The serde's 'serializationLib' attribute doesn't have the default value.", "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe", serdeInfo.getSerializationLib());
@Test public void addSerde() throws TException { String serdeName = uniqueSerdeName(); SerDeInfo serDeInfo = new SerDeInfo(serdeName, "serdeLib", Collections.singletonMap("a", "b")); serDeInfo.setSerializerClass("serializer"); serDeInfo.setDeserializerClass("deserializer"); serDeInfo.setDescription("description"); serDeInfo.setSerdeType(SerdeType.SCHEMA_REGISTRY); client.addSerDe(serDeInfo); serDeInfo = client.getSerDe(serdeName); Assert.assertEquals(serdeName, serDeInfo.getName()); Assert.assertEquals("serdeLib", serDeInfo.getSerializationLib()); Assert.assertEquals(1, serDeInfo.getParametersSize()); Assert.assertEquals("b", serDeInfo.getParameters().get("a")); Assert.assertEquals("serializer", serDeInfo.getSerializerClass()); Assert.assertEquals("deserializer", serDeInfo.getDeserializerClass()); Assert.assertEquals("description", serDeInfo.getDescription()); Assert.assertEquals(SerdeType.SCHEMA_REGISTRY, serDeInfo.getSerdeType()); }
Assert.assertNull("SerDeInfo name", serDeInfo.getName()); Assert.assertNull("SerDeInfo serialization lib", serDeInfo.getSerializationLib()); Assert.assertEquals("SerDeInfo parameters", 0, serDeInfo.getParameters().size());
Assert.assertEquals(fingerprint, schemaVersion.getFingerprint()); Assert.assertEquals(versionName, schemaVersion.getName()); Assert.assertEquals(serdeName, schemaVersion.getSerDe().getName()); Assert.assertEquals(serializer, schemaVersion.getSerDe().getSerializerClass()); Assert.assertEquals(deserializer, schemaVersion.getSerDe().getDeserializerClass());
private Partition createPartition(List<String> vals, Table table) throws MetaException { return new PartitionBuilder() .inTable(table) .setValues(vals) .addPartParam("key1", "S1") .addPartParam("key2", "S2") .addPartParam(EXCLUDE_KEY_PREFIX + "key1", "e1") .addPartParam(EXCLUDE_KEY_PREFIX + "key2", "e2") .setBucketCols(table.getSd().getBucketCols()) .setSortCols(table.getSd().getSortCols()) .setSerdeName(table.getSd().getSerdeInfo().getName()) .setSerdeLib(table.getSd().getSerdeInfo().getSerializationLib()) .setSerdeParams(table.getSd().getSerdeInfo().getParameters()) .build(conf); }
Assert.assertEquals(fingerprint, schemaVersion.getFingerprint()); Assert.assertEquals(versionName, schemaVersion.getName()); Assert.assertEquals(serdeName, schemaVersion.getSerDe().getName()); Assert.assertEquals(serializer, schemaVersion.getSerDe().getSerializerClass()); Assert.assertEquals(deserializer, schemaVersion.getSerDe().getDeserializerClass());
Assert.assertEquals(fingerprint, schemaVersion.getFingerprint()); Assert.assertEquals(versionName, schemaVersion.getName()); Assert.assertEquals(serdeName, schemaVersion.getSerDe().getName()); Assert.assertEquals(serializer, schemaVersion.getSerDe().getSerializerClass()); Assert.assertEquals(deserializer, schemaVersion.getSerDe().getDeserializerClass());
Assert.assertEquals(version, schemaVersion.getVersion()); Assert.assertEquals(SchemaVersionState.REVIEWED, schemaVersion.getState()); Assert.assertEquals(serdeName, schemaVersion.getSerDe().getName()); Assert.assertEquals(serializer, schemaVersion.getSerDe().getSerializerClass()); Assert.assertEquals(deserializer, schemaVersion.getSerDe().getDeserializerClass());