이를 코드로 어떻게 구현할까요? 분산 컴퓨팅 프레임워크인 아파치 스파크를 사용해 분할 및 정복 전략을 구현해 봅시다.
1. 아파치 스파크를 사용하려면 아파치 스파크 런타임 컨텍스트를 생성해야 합니다.
[in :]
import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").getOrCreate()
sc = spark.sparkContext
2. 예제에 사용할 단어 리스트를 만듭니다. 리스트를 스파크의 네이티브 자료 구조인 탄력적 분산 데이터셋(Resilient Distributed Dataset, RDD)으로 변환합니다.
[in :]
wordsList = ['python', 'java', 'ottawa', 'ottawa', 'java', 'news']
wordsRDD = sc.parallelize(wordsList, 4)
# wordsRDD에 담긴 요소를 불러 모아 출력합니다.
print(wordsRDD.collect())
3. map 함수를 사용하여 단어를 키-값 쌍으로 바꿉니다.
[in :]
wordPairs = wordsRDD.map(lambda w: (w, 1))
print(wordPairs.collect())
[out:]
[('python', 1), ('java', 1), ('ottawa', 1), ('ottawa', 1), ('java', 1), ('news', 1)]