1
거대한 RDD (소스)가 있고 그 중 BloomFilter 데이터를 만들어야하므로 사용자 데이터의 후속 업데이트는 중복이없는 진정한 "diffs"만 고려합니다. 블룸 필터의 구현의 대부분이 비 직렬화처럼Spark and BloomFilter sharing
(즉 쉽게하지만 고정 할 수 있습니다) 같은데,하지만 난 약간 다른 워크 플로우 원하는 :
- 프로세스의 모든 파티션을 적절한 블룸 필터의 인스턴스를 생성 각 파티션에 대해 BloomFilter 객체 각각에 대해 - 어딘가에 바이너리 파일에 작성하십시오. 실제로 전체 파티션을 처리하는 방법을 모르겠습니다.
mapPartition
RDD에서 사용할 수있는 기능이 있지만 반복기를 반환 할 것으로 예상됩니다. 아마도 전달 된 반복자를 소비하고 BloomFilter의 인스턴스를 만들고 어딘가에 작성하고 링크를 생성 파일에Iterator.singleton[PathToFile]
으로 반환할까요? - 마스터 노드에서 -
consume
처리 결과 (File에 대한 경로 목록)는 해당 파일을 읽고 메모리에 BloomFilters를 집계합니다. 그런 다음 이진 파일에 응답을 작성하십시오.
나는 올바른 방법을 알고하지 않습니다
- 가 전달되는 함수 내에서 (이 HDFS, S3N 또는 로컬 파일 수) 클러스터에서 지원되는 FS에서 파일을 만듭니다 ~
mapPartitions
- 두 번째 단계에서 파일의 내용을
consume
(파일 경로가있는 RDD가 있고 읽을 때SparkContext
을 사용하면 읽을 수있는 방법을 모르지만) 내용을 읽습니다.
감사합니다.