测验:流式输出的几种模式
한국어 원문으로 표시합니다.
나란히 도는 노드 둘이 같은 수퍼스텝에 있다. stream_mode="updates" 로 들으면 이벤트가 몇 개 나오는가?
- 둘의 갱신이 합쳐진 이벤트 하나
- 노드마다 하나씩 둘
- 수퍼스텝이 끝난 뒤 상태 전체 하나
- 리듀서가 붙은 열쇠의 수만큼
updates 이벤트만 모아 마지막 상태를 다시 세우려는데 trace 가 한 칸만 남는다. 원인은?
- updates 는 마지막 노드의 갱신만 내보낸다
- trace 에 붙은 리듀서가 스트리밍에서는 동작하지 않는다
- 재구성하는 쪽에서 모든 열쇠를 덮어써서, 이어 붙이는 열쇠를 합치지 않았다
- values 모드로 받아야만 trace 가 채워진다
stream_mode="debug" 의 task 이벤트에서 수퍼스텝 번호를 알려 주는 것은?
payload["name"]- 이벤트가 나온 순서 번호
payload["id"]의 앞자리event["step"]
진행 표시("3번째 문단 처리 중")를 상태에 넣지 않고 내보내려면?
- 노드가
writer: StreamWriter를 받아writer(...)로 내보내고custom모드로 듣는다 values모드로 듣고 프런트에서 걸러 낸다- 출력 스키마에서 그 열쇠를 빼고 상태에는 그대로 둔다
debug모드의 payload 에 끼워 넣는다
상태에 원문이 통째로 들어 있는 그래프를 values 모드로 흘려보낼 때 생각해야 할 것은?
- values 는 이어 붙이는 열쇠를 지원하지 않는다
- 수퍼스텝마다 상태 전체가 나가므로 원문이 그때마다 다시 전송된다
- values 는 마지막 이벤트만 실제로 내보내진다
- 체크포인터가 없으면 values 모드가 동작하지 않는다
values 의 마지막 이벤트와 invoke() 의 답이 같다는 사실이 실무에서 뜻하는 것은?
- 스트리밍은 결과를 근사하므로 기록용으로는 invoke 를 따로 돌려야 한다
- invoke 는 내부적으로 stream 을 두 번 돌린다
- 화면용과 기록용으로 그래프를 두 번 돌릴 이유가 없다
- values 모드에서는 리듀서가 적용되지 않는다