토끼의 한 접근법.
val datesWithPrefixRDD = datesRDD.map(s => prefix + s)
datesWithPrefixRDD.foreach(println)
이 생산 : 쉽게
val prefix = "/home/tmp/date="
val dates = Array("20140901", "20140902", "20140903", "20140904")
val datesRDD = sc.parallelize(dates, 2)
의 접두사를 지퍼로 잠그는있다 : 첫째, 예를 설정
/home/tmp/date=20140901
/home/tmp/date=20140903
/home/tmp/date=20140902
/home/tmp/date=20140904
하지만 당신은 하나의 문자열에 대해 물었다.
이
val bad = datesWithPrefixRDD.fold("")((s1, s2) => s1 + ", " + s2)
println(bad)
이 생산 :
, , /home/tmp/date=20140901, /home/tmp/date=20140902, , /home/tmp/date=20140903, /home/tmp/date=20140904
문제는 방법의 불꽃 RDD의 배() 메소드는 필자가 제공 빈 문자열로 연결을 시작하고, 한 번에 대한 명백한 첫 번째 시도는 일부 쉼표 문제가 전체 RDD 및 각 파티션에 대해 한 번. 그러나 우리는 빈 문자열을 처리 할 수 있습니다
val good = datesWithPrefixRDD.fold("")((s1, s2) =>
s1 match {
case "" => s2
case s => s + ", " + s2
})
println(good)
그런 다음 우리가 얻을 :
이
/home/tmp/date=20140901, /home/tmp/date=20140902, /home/tmp/date=20140903, /home/tmp/date=20140904
편집 : 그것은 "여분의 쉼표"문제를 해결하기 때문에는 사실, (감소)는 정돈 답을 생성합니다
다시
val alternative = datesWithPrefixRDD.reduce((s1, s2) => s1 + ", " + s2)
println(alternative)
우리가 얻을 :
/home/tmp/date=20140901, /home/tmp/date=20140902, /home/tmp/date=20140903, /home/tmp/date=20140904
작품, 고마워요 !!! –