in emr-dynamodb-hive/src/main/java/org/apache/hadoop/hive/dynamodb/DynamoDBExportSerDe.java [40:82]
public Object deserialize(Writable inputData) throws SerDeException {
if (inputData == null) {
return null;
}
if (inputData instanceof Text) {
String data = inputData.toString();
if (Strings.isNullOrEmpty(data)) {
return null;
}
String collectionSplitCharacter = byteToString(1);
List<String> fields = Arrays.asList(data.split(collectionSplitCharacter));
if (fields.isEmpty()) {
return null;
}
Map<String, AttributeValue> item = Maps.newHashMap();
String mapSplitCharacter = byteToString(2);
for (String field : fields) {
if (Strings.isNullOrEmpty(field)) {
throw new SerDeException("Empty fields in data: " + data);
}
List<String> values = Arrays.asList(field.split(mapSplitCharacter));
if (values.size() != 2) {
throw new SerDeException("Invalid record with map value: " + values);
}
String dynamoDBAttributeName = values.get(0);
String dynamoDBAttributeValue = values.get(1);
/* Deserialize the AttributeValue string */
AttributeValue deserializedAttributeValue = HiveDynamoDBItemType
.deserializeAttributeValue(dynamoDBAttributeValue);
item.put(dynamoDBAttributeName, deserializedAttributeValue);
}
return new DynamoDBItemWritable(item);
} else {
throw new SerDeException(getClass().toString() + ": expects Text object!");
}
}