Ejemplo n.º 1
0
 def __init__(self, access_pattern, coder):
   # Here's where we would use a different type of partitioning
   # (e.g. also by key) for a different access pattern.
   if access_pattern.urn == common_urns.side_inputs.ITERABLE.urn:
     self._kv_extrator = lambda value: ('', value)
     self._key_coder = coders.SingletonCoder('')
     self._value_coder = coder.wrapped_value_coder
   elif access_pattern.urn == common_urns.side_inputs.MULTIMAP.urn:
     self._kv_extrator = lambda value: value
     self._key_coder = coder.wrapped_value_coder.key_coder()
     self._value_coder = (
         coder.wrapped_value_coder.value_coder())
   else:
     raise ValueError(
         "Unknown access pattern: '%s'" % access_pattern.urn)
   self._windowed_value_coder = coder
   self._window_coder = coder.window_coder
   self._values_by_window = collections.defaultdict(list)
Ejemplo n.º 2
0
 def __init__(
     self,
     access_pattern,  # type: beam_runner_api_pb2.FunctionSpec
     coder  # type: WindowedValueCoder
 ):
   # type: (...) -> None
   # Here's where we would use a different type of partitioning
   # (e.g. also by key) for a different access pattern.
   if access_pattern.urn == common_urns.side_inputs.ITERABLE.urn:
     self._kv_extractor = lambda value: ('', value)
     self._key_coder = coders.SingletonCoder('')  # type: coders.Coder
     self._value_coder = coder.wrapped_value_coder
   elif access_pattern.urn == common_urns.side_inputs.MULTIMAP.urn:
     self._kv_extractor = lambda value: value
     self._key_coder = coder.wrapped_value_coder.key_coder()
     self._value_coder = (coder.wrapped_value_coder.value_coder())
   else:
     raise ValueError("Unknown access pattern: '%s'" % access_pattern.urn)
   self._windowed_value_coder = coder
   self._window_coder = coder.window_coder
   self._values_by_window = collections.defaultdict(
       list)  # type: DefaultDict[Tuple[str, BoundedWindow], List[Any]]