복붙노트

[SCALA] 어떻게 단순 무작위 표본 추출 및 아파치 스파크 (스칼라)에서 dataframe SAMPLE 기능 일을?

SCALA

어떻게 단순 무작위 표본 추출 및 아파치 스파크 (스칼라)에서 dataframe SAMPLE 기능 일을?

Q1. 그것은 잘 때 작동하지만, 0.6 그러나 그것은 나에게 내가 그것을 실행할 때마다 다른 크기의 샘플을 제공합니다 : 거짓, 분수 : 나는 샘플 매개 변수 withReplacement와 함수를 사용하여 스파크 dataframe (13 행)에서 단순 무작위 표본을 얻기 위해 노력하고 있어요 나는 세 번째 매개 변수 (씨앗)을 설정합니다. 왜?

Q2. 어떻게 샘플은 난수 생성 후 얻을 수있다?

미리 감사드립니다

해결법

  1. ==============================

    1.당신은 샘플로 원하는 부분에 따라 두 개의 서로 다른 알고리즘이있다. 당신은 Dataframes 유니폼에 샘플 방법은 샘플링 SPARK에 저스틴의 Pihony 답변을 확인할 수 있습니까?

    당신은 샘플로 원하는 부분에 따라 두 개의 서로 다른 알고리즘이있다. 당신은 Dataframes 유니폼에 샘플 방법은 샘플링 SPARK에 저스틴의 Pihony 답변을 확인할 수 있습니까?

    분획 RandomSampler.defaultMaxGapSamplingFraction 샘플링 이상이면 단순 필터에 의해 수행된다 :

    items.filter { _ => rng.nextDouble() <= fraction }
    

    그렇지 않으면 일을 조금 단순화, 그것은 반복적으로 임의의 정수를 사용하여 드롭 메소드를 호출하고 다음 항목을 걸립니다.

    GapSamplingIterator와 아무것도 잘못이있는 가정, 마음에 반환 된 요소의 수는 평균이 무작위로 될 것이라고 분명해야한다는 유지, 일부 * rdd.count 같음. 당신은 씨앗을 설정하면 당신은 임의의 숫자와 동일한 순서를 얻고 결과적으로 같은 요소가 샘플에 포함되어 있습니다.

  2. ==============================

    2.RDD의 API "는 어레이 내에 지정된 크기의 샘플의"을 반환 takeSample를 포함한다. 그것은이 (가) 다음 무작위로 그에서 특정 번호를 복용 한 요청보다 샘플 크기 이상을 때까지 샘플을 호출하여 사용할 수 있습니다. 코드 코멘트 인한 큰 샘플 크기를 향한 편견에 자주 반복이 안된다고.

    RDD의 API "는 어레이 내에 지정된 크기의 샘플의"을 반환 takeSample를 포함한다. 그것은이 (가) 다음 무작위로 그에서 특정 번호를 복용 한 요청보다 샘플 크기 이상을 때까지 샘플을 호출하여 사용할 수 있습니다. 코드 코멘트 인한 큰 샘플 크기를 향한 편견에 자주 반복이 안된다고.

  3. from https://stackoverflow.com/questions/32229941/how-do-simple-random-sampling-and-dataframe-sample-function-work-in-apache-spark by cc-by-sa and MIT license