PySpark Streaming으로 실시간 데이터 처리와 분석
Data Analyst

빅데이터 관련 자료/Machine Learning

PySpark Streaming으로 실시간 데이터 처리와 분석

carpe08 2023. 12. 1. 18:10
320x100
320x100

실시간 데이터 처리는 데이터가 실시간으로 생성되고 전송되는 경우에 그 데이터를 실시간으로 처리하고 분석하는 기술을 의미합니다. PySpark의 Spark Streaming을 사용하여 이러한 실시간 데이터 처리를 수행하는 방법을 살펴보겠습니다.

1. 스트리밍 컨텍스트 설정

먼저, PySpark에서는 스트리밍 처리를 위해 StreamingContext를 설정해야 합니다. 이는 SparkContext를 기반으로 작동하는데, 일반적으로 처리 간격(interval)을 설정하여 실시간 데이터를 수신하고 처리하는데 사용됩니다.

from pyspark import SparkContext
from pyspark.streaming import StreamingContext

# 스파크 컨텍스트 생성
sc = SparkContext(appName="StreamingExample")
ssc = StreamingContext(sc, 5)  # 5초 간격으로 스트리밍 생성

2. 데이터 소스 연결 및 처리

실습을 위해 소켓을 통해 텍스트 데이터를 받아옵니다. 여기서는 단어의 개수를 세는 간단한 예제를 보여줄 것입니다.

# 소켓 연결 설정
lines = ssc.socketTextStream("localhost", 9999)

# 데이터 처리 - 단어 세기
word_counts = lines.flatMap(lambda line: line.split(" ")) \
                   .map(lambda word: (word, 1)) \
                   .reduceByKey(lambda x, y: x + y)

# 결과 출력
word_counts.pprint()

3. 스트리밍 작업 실행 및 종료

모든 설정이 완료되면 스트리밍 작업을 시작하고 데이터를 수신하여 처리합니다. 작업을 시작하고 나면, 'Ctrl+C'를 통해 종료할 수 있습니다.

# 스트리밍 작업 실행
ssc.start()

# 작업 종료 대기
ssc.awaitTermination()

위 코드는 간단한 예제일 뿐이지만, 실제로는 데이터를 분석하고 이를 저장하거나 외부 시스템으로 전송하는 등의 추가 작업을 수행할 수 있습니다. 이런 방식으로 PySpark의 StreamingContext를 사용하여 실시간 데이터를 효율적으로 처리하고 분석할 수 있습니다.

320x100
320x100