apache / apache/beam

Support passing stateBackend through pipeline options in python sdks

Open
#19,585 0 comments 0 reactions 0 assignees View on GitHub
flink new feature P3 runners
Dominant language
Java
Stars
8.7k
Forks
4.7k
Avg merge
1d 20h
Merged PRs (30d)
196

Description

Currently the only way for python sdks to instruct flink to use a StateBackend different than the default (MemoryStateBackend) would be to specify state.backend in flink-conf.yaml, which creates the limitation of using the same statebackend for every job running on the same flink cluster. Ideally we should be able to pass it in to flink runner through PipelineOptions. Here's the error it spits out when I flag  \--state_backend=RocksDBStateBackend:

 
```

RuntimeError: Pipeline failed in state FAILED: com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Cannot construct instance of `org.apache.flink.runtime.state.StateBackend` (no Creators, like default
construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer,
or contain additional type information
 at [Source: (String)""RocksDBStateBackend""; line: 1, column:
1]

```

Acceptance Criteria:

Flink StateBackend is configurable via command line options from python.

 

Imported from Jira [BEAM-8112](https://issues.apache.org/jira/browse/BEAM-8112). Original Jira may contain additional context.
Reported by: catlynk.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.