Hmm, it worked fine for me on a primitive pipeline and default AvroCode for 
simple InboundData implementation.

Could you create a GitHub issue for that 
(https://github.com/apache/beam/issues)? It would be very helpful to provide 
the steps there how to reproduce this issue.

Thanks,
Alexey

> On 23 Mar 2023, at 19:08, Juan Cuzmar <jcuz...@protonmail.com> wrote:
> 
> unfortunately didn't work.
> I added the @DefaultCoder as you told me and i removed the .withCoder from my 
> JdbcIO pipe and showed the same error:
> 
> java.lang.IllegalStateException: Unable to infer a coder for JdbcIO.readAll() 
> transform. Provide a coder via withCoder, or ensure that one can be inferred 
> from the provided RowMapper.
> 
> 
> 
> 
> Juan Cuzmar.
> 
> ------- Original Message -------
> On Thursday, March 23rd, 2023 at 2:17 PM, Alexey Romanenko 
> <aromanenko....@gmail.com> wrote:
> 
> 
>> Well, perhaps it’s a bug (I’ll try to check it on my side later).
>> 
>> Can you try to annotate InboundData class with 
>> “@DefaultCoder(AvroCoder.class)” for example and see if it will work?
>> 
>>> On 23 Mar 2023, at 15:13, Juan Cuzmar jcuz...@protonmail.com wrote:
>>> 
>>> Alexey yes! here it is:
>>> 
>>> import lombok.*;
>>> import lombok.extern.jackson.Jacksonized;
>>> 
>>> import java.io.Serializable;
>>> import java.util.List;
>>> import java.util.Map;
>>> 
>>> @Jacksonized
>>> @Builder
>>> @Getter
>>> @Value
>>> @EqualsAndHashCode
>>> @ToString
>>> public class InboundData implements Serializable {
>>> 
>>> String payload;
>>> Map<String, String> attributes;
>>> List<Store> stores;
>>> }
>>> 
>>> ------- Original Message -------
>>> On Thursday, March 23rd, 2023 at 8:14 AM, Alexey Romanenko 
>>> aromanenko....@gmail.com wrote:
>>> 
>>>> Could you share a class declaration of your InboundData class? Is it just 
>>>> a POJO?
>>>> 
>>>> —
>>>> Alexey
>>>> 
>>>>> On 23 Mar 2023, at 08:16, Juan Cuzmar jcuz...@protonmail.com wrote:
>>>>> 
>>>>> Hello all,
>>>>> 
>>>>> I hope this message finds you well. I am currently working with Apache 
>>>>> Beam's JdbcIO and need some guidance regarding setting a coder for the 
>>>>> input data without resorting to the deprecated withCoder method. I've 
>>>>> been trying to resolve this issue and would appreciate any insights or 
>>>>> recommendations from the community.
>>>>> 
>>>>> Here's a snippet of my code:
>>>>> 
>>>>> .apply("Inserting", JdbcIO.<PubsubMessage, InboundData>readAll()
>>>>> .withDataSourceProviderFn(DataSourceProvider.of(dbConfig))
>>>>> ...
>>>>> .withRowMapper(resultSet -> {
>>>>> // Mapping logic here
>>>>> }).withOutputParallelization(false)
>>>>> ).setCoder(SerializableCoder.of(InboundData.class))
>>>>> 
>>>>> When I run the code, I encounter the following error:
>>>>> 
>>>>> java.lang.IllegalStateException: Unable to infer a coder for 
>>>>> JdbcIO.readAll() transform.
>>>>> ...
>>>>> 
>>>>> I understand that the withCoder method is marked as deprecated and should 
>>>>> be avoided. Therefore, I would like to know the recommended way to set 
>>>>> the coder for JdbcIO, considering the deprecated status of withCoder.
>>>>> 
>>>>> If there are any specific coding practices or conventions that I should 
>>>>> follow when posting code snippets or emphasizing certain aspects, please 
>>>>> let me know, and I'll be sure to adhere to them in the future.
>>>>> 
>>>>> Thank you for your time and assistance.
>>>>> 
>>>>> Best regards!

Reply via email to