[Spark Streaming]
window operation
▶ spark의 window 연산은 여러 배치 배치들의 결과를 합쳐서 StreamingContext의 배치 간격보다 훨씬 긴 시간 간격에 대한 결과를 계산한다.
▶ 아래 두 가지 값은 StreamingContext의 배치 간격의 배수여야 한다.
1.window duraton
- 지나간 배치를 몇 개나 사용 할지를 제어하며 개수 만큼의 최근 배치들을 사용 - 만약 배치 간격 10초의 DStream을 갖고 있고 최근 30초간의 슬라이딩 윈도를 만들고 싶다면 1을 30초로 |
2.sliding duration
- 기본값이 배치 간격과 동일하며 얼마나 자주 새로운 DStream이 결과를 계산할지를 결정 - 만약 배치 간격 10초의 DStream을 갖고 있고 두 번의 배치마다 연산을 하고 싶다면 슬라이딩 간격을 20초로 설정한다. |
※샘플 데이터
▶환경 센서 데이터 (RabbitMQ MQTT Data)
※테스트 소스
▶30초의 기본 배치 설정 후 1분 30초마다 window 데이터 확인
public SparkStreaming() { .set("spark.driver.allowMultipleContexts", "true") .set("spark.ui.port", "4046"); data.window(Durations.seconds(60), Durations.seconds(60)); |
※콘솔 결과 확인
window 데이터 = 첫번째 + 두번째 + 세번째 데이터 ●첫번째 데이터 ------------------------------------------- ●두번째 데이터 ------------------------------------------- [{"service_name":"env","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":9014, ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ ●세번째 데이터 ------------------------------------------- [{"service_name":"env","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":9009, ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ ●Window 데이터 ------------------------------------------- [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ [{"service_name":"env","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":9014, ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~ [{"service_name":"env","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":9009, ~~ [{"service_name":"bzt","device_type":"","device_mac":"00:40:9d:98:ac:d1","time_zone":"KST","sensor_code":"", ~~
|
'spark - python - R' 카테고리의 다른 글
[SPARK] Spark Streaming - Transformations on DStreams (0) | 2017.05.31 |
---|---|
[SPARK] flatMap - JavaReceiverInputDStream (0) | 2017.05.30 |
[SPARK] Mongo Mysql foreachRDD (0) | 2017.04.20 |
[R] R Studio Server 설치 (0) | 2017.04.20 |
[SPARK] 1.6 -> 2.1 foreachRDD, flatMap 사용법 변화 (0) | 2017.04.20 |