2016-11-12 4 views
1

notifyConsumer이 가능합니까? Producer이 모든 데이터를 Kafka topic으로 게시하면 되나요?Spark Streaming - 제작자가 완료되면 어떻게 소비자에게 통보합니까?

여러 파티션에서 동일한 데이터 (일부 고유 필드 포함)를 사용할 수있는 가능성이 있으므로 데이터를 그룹화하고 계산해야합니다.

이 경우 Sliding window을 사용하려고 생각했지만 제작자가 데이터를 게시했는지 여부는 아직 알 수 없습니다.

메시지의 양은 around 50K입니다. 더 나은 구성을 가진 브로커가있는 경우 Kafka는 50K messages[Single partition]을 초 단위로 처리 할 수 ​​있습니까?

현재 우리는 Default Partitioner을 기반으로 데이터를 분할하기 위해 여러 개의 파티션을 가질 계획입니다.

효율적인 처리 방법은 무엇입니까?

업데이트 :

매 15 분마다 한 번, 생산자는 데이터를 얻을 수 있으며, 내가이 배치에 대한 사용 사례입니다 확신 카프카 항목에 데이터를 게시 시작, 그러나 이것은 우리의 현재 디자인입니다.

+0

스트림에 대해 이야기 할 때 "완료"란 의미가 확실하지 않습니다. 그들이 길이가 한정되어 있지 않은 개울의 전체 지점이 아닌가? 제작자가 일괄 처리 메시지를 생성하고 일괄 처리 경계를 염려한다면 "일괄 처리 완료"메시지를 게시 할 수 있습니다. –

+0

@JoePallas : 요점은 모르겠다. "배치 끝"메시지를 게시하면 무슨 뜻입니까? – Shankar

+1

생산자는 배치 처리를 마쳤지 만 소비자는 배치의 모든 메시지를 보았는지 여부를 알지 못합니다. 제작자가 배치의 모든 데이터가 게시 된 후 특수한 "end of batch"메시지를 게시하는 경우 소비자는 배치를 처리하기 전에이를 확인할 때까지 기다릴 수 있습니다. 파티션이 여러 개인 경우 더 복잡해질 수 있습니다. 마커는 모든 파티션으로 이동해야합니다. –

답변

1

스파크 스트리밍이 그렇게 작동하지 않습니다. 작동 방식은 무한한 데이터 흐름으로 각 일괄 처리 간격으로 처리되고 처리됩니다. 즉, 논리적 "배치 종료"신호를 보내려면이 데이터 배치가 끝났음을 나타내는 메시지를 보내야합니다. 그러면 처리 된 메시지를 원하는 출력 싱크대로 보낼 수 있습니다.

달성 할 수있는 한 가지 방법은 일괄 처리간에 데이터를 집계하고 일괄 처리 간격간에 상태를 유지할 수있는 상태 저장 스트림을 사용하는 것입니다.

+0

감사합니다. 더 많은 정보를 주거나 Stateful 스트림에 연결해서 뭔가 시도해 볼 수 있습니까? – Shankar

+0

@Shankar [이 블로그 게시물] (http://asyncified.io/2016/07/31/exploring-stateful)을 읽을 수 있습니다. -streaming-with-apache-spark) (면책 조항 : 저는 저자입니다). –

+0

블로그는 매우 유용합니다. 덕분입니다. – Shankar

관련 문제