4 * 10^8 (대략) 레코드가있는 테이블이 있고 그 중 4 * 10^6 샘플을 얻고 싶습니다. Map-Reduce 구현의 특수 샘플 메소드
그러나 샘플을 얻을 내 방법은 어떻게 든 특별 :- 나는 (모든 레코드가 선택 될 수있는 동일한 확률을 가지고) 무작위로 4 * 10^8 레코드에서 한 레코드를 선택합니다.
- 반복 단계 1 4 * 10^6 번 (하나의 레코드가 여러 번 선택 되더라도 상관 없음). 1부터 n까지 임의의 정수이다 (n은 크기가
- 테이블
A(num int)
를 생성하고, 테이블A
의 모든 레코드에 하나 개의 번호 :
은 내가이 해결하는 방법을 생각한다 내 원본 테이블, 위에서 언급 한 대략 4 * 10^8).
- 테이블
- 모든 맵에 리소스 파일로 테이블
A
을로드하고 결정중인 레코드의 서수가 테이블A
에 있으면이 레코드를 출력하고 그렇지 않으면 폐기합니다.
원본 테이블에서 더 많은 레코드를 샘플링하려고하면 테이블 A
이 매우 커져서 리소스 파일로로드 될 수 없기 때문에 내 방법이 좋지 않을 것이라고 생각합니다.
그럼, 어느 누구도 우아한 알고리즘을 제공 할 수 있습니까?