public Object deserialize()

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!");
    }
  }