더북(TheBook)

연습 삼아 body 칼럼(3번 칼럼)과 tags 칼럼(8번 칼럼)에 포함된 &lt;&gt; 문자열을 각각 <> 문자로 바꾸어 보자. 먼저 각 로우를 Seq 객체로 매핑한 후 Seq 객체의 updated 메서드를 사용해 Seq의 요솟값을 변경한다. 그런 다음 updated 결과로 반환된 Seq를 다시 Row 객체로 매핑하고, 원본 DataFrame의 스키마를 사용해 새 DataFrame을 만들 수 있다. 이 과정을 구현한 코드는 다음과 같다.

val postsMapped = postsDf.rdd.map(row => Row.fromSeq(
  row.toSeq.
    updated(3, row.getString(3).replace("&lt;","<").replace("&gt;",">")).
    updated(8, row.getString(8).replace("&lt;","<").replace("&gt;",">"))))
val postsDfNew = spark.createDataFrame(postsMapped, postsDf.schema)

 

하지만 DataFrame API의 내장 DSL, SQL 함수, 사용자 정의 함수 등으로 거의 모든 매핑 작업을 해결할 수 있기 때문에 DataFrame을 RDD로 변환하고 다시 DataFrame으로 만들어야 할 경우는 사실 별로 없다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.