Apache Flink ListState <String>против ValueState <Список <String>> - PullRequest
1 голос
/ 16 апреля 2019

Глядя на документацию, кажется, что я мог бы использовать либо ListState, либо ValueState<List<String>> для сохранения состояния. Например код ниже:

// Use ListState
ListStateDescriptor<String> lDescriptor = new ListStateDescriptor<String> 
     ("testListState", TypeInformation.of(new TypeHint<String>() {}));

ListState<String> testListState = getRuntimeContext().getListState(lDescriptor);


// Use ValueState
ValueStateDescriptor<List<String>> testDescriptor =
 new ValueStateDescriptor<List<String>>("testList",
 TypeInformation.of(new TypeHint<List<String>>() {}));

ValueState<List<String>> testState = getRuntimeContext().getState(testDescriptor);

Если мне нужно сохранить уникальный список элементов, привязанных к каждому ключу, будет ли преимуществом использование одного над другим? Недостатком использования ListState было бы сначала преобразовать Iterable в List <>, если мне нужно изменить его перед сохранением списка, тогда как я мог бы просто получить список напрямую, если я использую ValueState.

1 Ответ

1 голос
/ 17 апреля 2019

Я использую ValueState , только если я хочу сохранить только одно значение для каждого ключа.Вы можете использовать его для хранения списков, но код будет более подробным.Если вы используете ValueState , вы должны получить значение, обновить список и обновить значение, но если вы используете ListState , вы можете управлять им напрямую

...