Hi all,

I was writing a very simple transform in Kotlin as follows that takes in a 
series of integers and applies a simply DoFn against them:

pipeline
            .apply(Create.of(1, 2, 3))
            .apply(ParDo.of(object: DoFn<Int, Int>(){
                    @ProcessElement
                    fun processElement(@Element element: Int){
                        // Omitted for brevity
                    }
                })
            )

The issue seems to arise when we use the `@Element` attribute on the element 
which fails with the following error:

Exception in thread "main" java.lang.IllegalArgumentException: Type of @Element 
must match the DoFn typeCreate.Values/Read(CreateSource).out [PCollection]

Basically, it seems that the use of the `@Element` attribute isn't able to 
properly decode or recognize the Kotlin `Int`, however if we adjust the DoFn to 
instead use the ProcessContext argument, which is able to resolve the element 
via `context.element()`.

Is there anything that seems wrong here? I'd imagine that this should just 
"work", or maybe there's some specific configuration that I might be missing as 
this is the first Kotlin issue that I've encountered when interacting with Beam.

I'll be happy to provide any additional details for this if needed.

Thanks,

Rion

Reply via email to