특정 매개 변수에 따라 그룹으로 분할 해야하는 큰 데이터 세트가 있습니다. 작업을 가능한 한 효율적으로 처리하고 싶습니다. 그렇게하는 두 가지 방법을 상상할 수 있습니다
옵션 1- 원래 RDD 및 필터에서 맵 작성
def customMapper(record):
if passesSomeTest(record):
return (1,record)
else:
return (0,record)
mappedRdd = rddIn.map(lambda x: customMapper(x))
rdd0 = mappedRdd.filter(lambda x: x[0]==0).cache()
rdd1 = mappedRdd.filter(lambda x: x[1]==1).cache()
옵션 2- 원본 RDD를 직접 필터링
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
주먹 방법은 원래 데이터 세트의 모든 레코드를 3 번 반복해야합니다. 두 번째는 정상적인 상황에서 두 번만 수행해야하지만 스파크는 장면 그래프 건물 뒤에서 일부를 수행하므로 상상할 수 있습니다. 같은 방식으로 효과적으로 수행됩니다. 내 질문은 : a.) 하나의 방법이 다른 방법보다 효율적입니까, 아니면 스파크 그래프 작성으로 동등하게 만듭니다. b) 단일 패스 로이 분할을 수행 할 수 있습니까?