Creating your own jar with updated dependencies is the right solution,
to ensure it gets used you may need to set Python's --beam_services
pipeline option, e.g.
--beam_services='{"sdks:java:io:expansion-service:shadowJar":
"/path/to/your.jar"}'
See
https://github.com/apache/beam/blob/release-2.46.0/sdks/python/apache_beam/options/pipeline_options.py#L512
Equivalently, you can pass a manually created expansion service into
your ReadFromKafka constructor.
Long term the nicest solution is to update the version used by Beam.
Pull requests welcome!
- Robert
On Wed, Mar 26, 2025 at 8:02 AM Kaur Jaanson <[email protected]> wrote:
>
> Hello!
>
> Hoping someone can point me in the right direction. I am trying to use PEM
> certificates for authenticating to Kafka topic using Python and Java
> Expansion Service. However I am running into an error:
>
>> Caused by: java.security.NoSuchAlgorithmException: PEM KeyStore not
>> available
>
>
> I am using FlinkRunner and starting expansion service myself with the
> expansion service jar taken from Maven. I suspect that the issue is older
> version of Java-s kafka-client that has been packaged into expansion service
> jar (and job server?). From Apache Beam docs page on Java SDK dependencies,
> it seems that default libraries that get used during building jars are set in
> https://github.com/apache/beam/blob/867d70c1689bc4b16141043616f912ce0b10b74c/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy#L626
> and kafka-client version there is quite old (2.4.1). PEM support is supposed
> to be there after 2.7.
>
> With that I wonder what would be a good way to specify Java dependencies for
> multi language pipeline, eg using KafkaIO with newer kafka-client from Python?
>
> PS: I tried updating the kafka-client version in BeamModulePlugin.groovy and
> creating expansion-service jar and packaging into my python beam image,
> however it seems that the error still remained. It might be skill issue, I am
> not very familiar with java build tooling (maven, gradle) and might have
> missed something. Beam version I am using is 2.61.0.
>
> Thank you,
> Kaur Jaanson