Class MapElements<InputT,OutputT>
- java.lang.Object
-
- org.apache.beam.sdk.transforms.PTransform<PCollection<? extends InputT>,PCollection<OutputT>>
-
- org.apache.beam.sdk.transforms.MapElements<InputT,OutputT>
-
- All Implemented Interfaces:
java.io.Serializable
,HasDisplayData
public class MapElements<InputT,OutputT> extends PTransform<PCollection<? extends InputT>,PCollection<OutputT>>
PTransform
s for mapping a simple function over the elements of aPCollection
.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MapElements.MapWithFailures<InputT,OutputT,FailureT>
APTransform
that adds exception handling toMapElements
.
-
Field Summary
-
Fields inherited from class org.apache.beam.sdk.transforms.PTransform
name, resourceHints
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description <NewFailureT>
MapElements.MapWithFailures<InputT,OutputT,NewFailureT>exceptionsInto(TypeDescriptor<NewFailureT> failureTypeDescriptor)
Returns a newMapElements.MapWithFailures
transform that catches exceptions raised while mapping elements, with the given type descriptor used for the failure collection but the exception handler yet to be specified usingMapElements.MapWithFailures.exceptionsVia(ProcessFunction)
.<FailureT> MapElements.MapWithFailures<InputT,OutputT,FailureT>
exceptionsVia(InferableFunction<WithFailures.ExceptionElement<InputT>,FailureT> exceptionHandler)
Returns a newMapElements.MapWithFailures
transform that catches exceptions raised while mapping elements, passing the raised exception instance and the input element being processed through the givenexceptionHandler
and emitting the result to a failure collection.PCollection<OutputT>
expand(PCollection<? extends InputT> input)
Override this method to specify how thisPTransform
should be expanded on the givenInputT
.static <OutputT> MapElements<?,OutputT>
into(TypeDescriptor<OutputT> outputType)
Returns a newMapElements
transform with the given type descriptor for the output type, but the mapping function yet to be specified usingvia(ProcessFunction)
.void
populateDisplayData(DisplayData.Builder builder)
Register display data for the given transform or component.<NewInputT>
MapElements<NewInputT,OutputT>via(Contextful<Contextful.Fn<NewInputT,OutputT>> fn)
Likevia(ProcessFunction)
, but supports access to context, such as side inputs.static <InputT,OutputT>
MapElements<InputT,OutputT>via(InferableFunction<InputT,OutputT> fn)
ForInferableFunction<InputT, OutputT>
fn
, returns aPTransform
that takes an inputPCollection<InputT>
and returns aPCollection<OutputT>
containingfn.apply(v)
for every elementv
in the input.<NewInputT>
MapElements<NewInputT,OutputT>via(ProcessFunction<NewInputT,OutputT> fn)
For aProcessFunction<InputT, OutputT>
fn
and output type descriptor, returns aPTransform
that takes an inputPCollection<InputT>
and returns aPCollection<OutputT>
containingfn.apply(v)
for every elementv
in the input.<NewInputT>
MapElements<NewInputT,OutputT>via(SerializableFunction<NewInputT,OutputT> fn)
Binary compatibility adapter forvia(ProcessFunction)
.static <InputT,OutputT>
MapElements<InputT,OutputT>via(SimpleFunction<InputT,OutputT> fn)
Binary compatibility adapter forvia(InferableFunction)
.-
Methods inherited from class org.apache.beam.sdk.transforms.PTransform
compose, compose, getAdditionalInputs, getDefaultOutputCoder, getDefaultOutputCoder, getDefaultOutputCoder, getKindString, getName, getResourceHints, setResourceHints, toString, validate, validate
-
-
-
-
Method Detail
-
via
public static <InputT,OutputT> MapElements<InputT,OutputT> via(InferableFunction<InputT,OutputT> fn)
ForInferableFunction<InputT, OutputT>
fn
, returns aPTransform
that takes an inputPCollection<InputT>
and returns aPCollection<OutputT>
containingfn.apply(v)
for every elementv
in the input.InferableFunction
has the advantage of providing type descriptor information, but it is generally more convenient to specify output type viainto(TypeDescriptor)
, and provide the mapping as a lambda expression tovia(ProcessFunction)
.Example usage:
PCollection<String> words = ...; PCollection<Integer> wordsPerLine = words.apply(MapElements.via( new InferableFunction<String, Integer>() { public Integer apply(String word) throws Exception { return word.length(); } }));
-
via
public static <InputT,OutputT> MapElements<InputT,OutputT> via(SimpleFunction<InputT,OutputT> fn)
Binary compatibility adapter forvia(InferableFunction)
.
-
into
public static <OutputT> MapElements<?,OutputT> into(TypeDescriptor<OutputT> outputType)
Returns a newMapElements
transform with the given type descriptor for the output type, but the mapping function yet to be specified usingvia(ProcessFunction)
.
-
via
public <NewInputT> MapElements<NewInputT,OutputT> via(ProcessFunction<NewInputT,OutputT> fn)
For aProcessFunction<InputT, OutputT>
fn
and output type descriptor, returns aPTransform
that takes an inputPCollection<InputT>
and returns aPCollection<OutputT>
containingfn.apply(v)
for every elementv
in the input.Example usage:
PCollection<Integer> wordLengths = words.apply( MapElements.into(TypeDescriptors.integers()) .via((String word) -> word.length()));
-
via
public <NewInputT> MapElements<NewInputT,OutputT> via(SerializableFunction<NewInputT,OutputT> fn)
Binary compatibility adapter forvia(ProcessFunction)
.
-
via
@Experimental(CONTEXTFUL) public <NewInputT> MapElements<NewInputT,OutputT> via(Contextful<Contextful.Fn<NewInputT,OutputT>> fn)
Likevia(ProcessFunction)
, but supports access to context, such as side inputs.
-
expand
public PCollection<OutputT> expand(PCollection<? extends InputT> input)
Description copied from class:PTransform
Override this method to specify how thisPTransform
should be expanded on the givenInputT
.NOTE: This method should not be called directly. Instead apply the
PTransform
should be applied to theInputT
using theapply
method.Composite transforms, which are defined in terms of other transforms, should return the output of one of the composed transforms. Non-composite transforms, which do not apply any transforms internally, should return a new unbound output and register evaluators (via backend-specific registration methods).
- Specified by:
expand
in classPTransform<PCollection<? extends InputT>,PCollection<OutputT>>
-
populateDisplayData
public void populateDisplayData(DisplayData.Builder builder)
Description copied from class:PTransform
Register display data for the given transform or component.populateDisplayData(DisplayData.Builder)
is invoked by Pipeline runners to collect display data viaDisplayData.from(HasDisplayData)
. Implementations may callsuper.populateDisplayData(builder)
in order to register display data in the current namespace, but should otherwise usesubcomponent.populateDisplayData(builder)
to use the namespace of the subcomponent.By default, does not register any display data. Implementors may override this method to provide their own display data.
- Specified by:
populateDisplayData
in interfaceHasDisplayData
- Overrides:
populateDisplayData
in classPTransform<PCollection<? extends InputT>,PCollection<OutputT>>
- Parameters:
builder
- The builder to populate with display data.- See Also:
HasDisplayData
-
exceptionsInto
@Experimental(WITH_EXCEPTIONS) public <NewFailureT> MapElements.MapWithFailures<InputT,OutputT,NewFailureT> exceptionsInto(TypeDescriptor<NewFailureT> failureTypeDescriptor)
Returns a newMapElements.MapWithFailures
transform that catches exceptions raised while mapping elements, with the given type descriptor used for the failure collection but the exception handler yet to be specified usingMapElements.MapWithFailures.exceptionsVia(ProcessFunction)
.See
WithFailures
documentation for usage patterns of the returnedWithFailures.Result
.
-
exceptionsVia
@Experimental(WITH_EXCEPTIONS) public <FailureT> MapElements.MapWithFailures<InputT,OutputT,FailureT> exceptionsVia(InferableFunction<WithFailures.ExceptionElement<InputT>,FailureT> exceptionHandler)
Returns a newMapElements.MapWithFailures
transform that catches exceptions raised while mapping elements, passing the raised exception instance and the input element being processed through the givenexceptionHandler
and emitting the result to a failure collection.This method takes advantage of the type information provided by
InferableFunction
, meaning that a call toexceptionsInto(TypeDescriptor)
may not be necessary.See
WithFailures
documentation for usage patterns of the returnedWithFailures.Result
.Example usage:
Result<PCollection<String>, String>> result = words.apply( MapElements .into(TypeDescriptors.integers()) .via((String word) -> 1 / word.length) // Could throw ArithmeticException .exceptionsVia(new WithFailures.ExceptionAsMapHandler<String>() {})); PCollection<Integer> output = result.output(); PCollection<String> failures = result.failures();
-
-