Exemplo n.º 1
0
 @SuppressWarnings("deprecation")
 @Override
 public MapJoinKey putRow(
     MapJoinObjectSerDeContext keyContext,
     Writable currentKey,
     MapJoinObjectSerDeContext valueContext,
     Writable currentValue)
     throws SerDeException {
   SerDe keySerde = keyContext.getSerDe(), valSerde = valueContext.getSerDe();
   if (writeHelper == null) {
     LOG.info(
         "Initializing container with "
             + keySerde.getClass().getName()
             + " and "
             + valSerde.getClass().getName());
     if (keySerde instanceof BinarySortableSerDe && valSerde instanceof LazyBinarySerDe) {
       LazyBinaryStructObjectInspector valSoi =
           (LazyBinaryStructObjectInspector) valSerde.getObjectInspector();
       writeHelper = new LazyBinaryKvWriter(keySerde, valSoi, valueContext.hasFilterTag());
       internalValueOi = valSoi;
       sortableSortOrders = ((BinarySortableSerDe) keySerde).getSortOrders();
     } else {
       writeHelper = new KeyValueWriter(keySerde, valSerde, valueContext.hasFilterTag());
       internalValueOi = createInternalOi(valueContext);
       sortableSortOrders = null;
     }
   }
   writeHelper.setKeyValue(currentKey, currentValue);
   hashMap.put(writeHelper, -1);
   return null; // there's no key to return
 }
Exemplo n.º 2
0
  private LazyBinaryStructObjectInspector createInternalOi(MapJoinObjectSerDeContext valCtx)
      throws SerDeException {
    // We are going to use LBSerDe to serialize values; create OI for retrieval.
    List<? extends StructField> fields =
        ((StructObjectInspector) valCtx.getSerDe().getObjectInspector()).getAllStructFieldRefs();
    List<String> colNames = new ArrayList<String>(fields.size());
    List<ObjectInspector> colOis = new ArrayList<ObjectInspector>(fields.size());
    for (int i = 0; i < fields.size(); ++i) {
      StructField field = fields.get(i);
      colNames.add(field.getFieldName());
      // It would be nice if OI could return typeInfo...
      TypeInfo typeInfo =
          TypeInfoUtils.getTypeInfoFromTypeString(field.getFieldObjectInspector().getTypeName());
      colOis.add(LazyBinaryUtils.getLazyBinaryObjectInspectorFromTypeInfo(typeInfo));
    }

    return LazyBinaryObjectInspectorFactory.getLazyBinaryStructObjectInspector(colNames, colOis);
  }