각 줄이 ID가 키 인 레코드 인 큰 파일이 있습니다. ID별로Spark : groupbykey 작업으로 인한 메모리 부족 예외
val lines = fileRdd.map(line => (line.id, line))
다음 I 군 라인
val groupedLines = lines.groupByKey()
그래서 동일한 ID를 가진 라인이 하나 개의 작업자 노드 셔플한다. RDD groupedLines에서 튜플 ID와 같다 ->의 Iterable (1 호선, 2 호선, ..., 린넨) 라인의 많은 (...) 튜플의 값 의 Iterable의 다음 크기 동일한 ID가있는 경우은 꽤 클 것이고, 기계의 프로세스의 JVM 메모리 한계보다 크면 메모리 부족 문제가 발생할 수 있습니다.
그렇다면이 문제가 있는지 여부와 상관없이 누구나이 사례를 다루는 방법을 알고 있다면 그룹화 된 RDD에서 터플 값이 너무 큰 것일까 요? 우리는 또 다른 중첩 된 RDD, RDD [(ID, RDD)]
덕분에 같은 수 튜플의 값을 변경 sc.parallelize (t._2.toSeq)를 사용할 수 : P를
사실이며 촉발 spark.shuffle.consolidateFiles를 구성 파라미터를 설정 시도 .storage.memoryFraction을 0으로 설정하십시오. 또한 클러스터의 파일 크기, 메모리 양 등의 일부 메트릭을 나열하십시오. –
파일 크기를 RAM 크기 및 sparkConf로 지정할 수 있습니까? 단일 노드를 올바르게 사용하고 있습니까? –