[SCALA] 표준 출력에에 println ()를 잃고 스파크
SCALA표준 출력에에 println ()를 잃고 스파크
나는 다음과 같은 코드가 있습니다 :
val blueCount = sc.accumulator[Long](0)
val output = input.map { data =>
for (value <- data.getValues()) {
if (record.getEnum() == DataEnum.BLUE) {
blueCount += 1
println("Enum = BLUE : " + value.toString()
}
}
data
}.persist(StorageLevel.MEMORY_ONLY_SER)
output.saveAsTextFile("myOutput")
그런 다음 blueCount는 0이 아닌,하지만 난 더에 println () 출력 없어! 여기 아무것도 실종? 감사!
해결법
-
==============================
1.이 개념 질문입니다 ...
이 개념 질문입니다 ...
당신의 노동자와 그 근로자 n은 RDD 또는 DataFrame의 파티션을 저장 가정 해 봅시다 많은 노동자로 구성, 큰 클러스터가 상상, 당신은 데이터에서지도 작업을 시작하고, 그지도의 내부는 우선, 인쇄 문이 상상 :
사람들은 따라서 디자이너 / 아파치 - 스파크의 테이너가 어떤지도-감소 작동 내부 인쇄 문에 대한 지원을 (이 축전지를 포함, 심지어 변수 방송) 드롭 논리적으로 결정, 너무 많은 질문입니다.
스파크가 매우 큰 데이터 세트를 위해 설계된 언어이기 때문에이 또한 의미가 있습니다. 테스트 및 디버깅하는 데 유용 할 수 있습니다 인쇄하는 동안, 당신은 그들이 행 수백만 또는 수십억을 가지고 내장되어 있기 때문에 DataFrame 또는 RDD의 모든 라인을 인쇄하고 싶지 않아요! 당신도 처음에 인쇄 싶지 않을 때 왜 이런 복잡한 문제를 다루는?
이것을 증명하기 위해 당신은 예를 들어,이 스칼라 코드를 실행할 수 있습니다 :
// Let's create a simple RDD val rdd = sc.parallelize(1 to 10000) def printStuff(x:Int):Int = { println(x) x + 1 } // It doesn't print anything! because of a logic design limitation! rdd.map(printStuff) // But you can print the RDD by doing the following: rdd.take(10).foreach(println)
-
==============================
2.나는 유틸리티 기능을하여 주위를 작동 할 수 있었다 :
나는 유틸리티 기능을하여 주위를 작동 할 수 있었다 :
object PrintUtiltity { def print(data:String) = { println(data) } }
from https://stackoverflow.com/questions/33225994/spark-losing-println-on-stdout by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크 쉼표 목록, 어떻게 항아리의 디렉토리를 선언하는 원한다 --jars 인수를 스파크 제출? (0) | 2019.11.04 |
---|---|
[SCALA] 어떻게 A [B [C]가] B로 변환하는 [A [C]] A와 B는 모나드가 있다면? (0) | 2019.11.04 |
[SCALA] 어떻게 동일한 열 값이 dataframes로 dataframe을 분할하는? (0) | 2019.11.04 |
[SCALA] 무엇 스파크의`unionAll``DataFrame`으로 잘못된 것입니다? (0) | 2019.11.04 |
[SCALA] 불꽃 DataFrame에있는 객체의 배열을 받아들이는 UDF를 정의? (0) | 2019.11.04 |