복붙노트

[SCALA] 불꽃의 중첩 Dataframe을 flatmap하는 방법

SCALA

불꽃의 중첩 Dataframe을 flatmap하는 방법

나는 다음과 같이 같은 문자열을 내포했다. 나는 불꽃의 고유 한 행을 생산하도록지도 평면에 원하는

내 dataframe가있다

A,B,"x,y,z",D

나는 그것이 같은 출력을 생성 변환 할

A,B,x,D
A,B,y,D
A,B,z,D

어떻게 그렇게 할 수 있습니다.

기본적으로 내가 어떻게 평면 맵을하고 Dataframe 내부의 기능을 적용 할 수 있습니다

감사

해결법

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

    1.스파크 2.0 이상

    스파크 2.0 이상

    Dataset.flatMap :

    val ds = df.as[(String, String, String, String)]
    ds.flatMap { 
      case (x1, x2, x3, x4) => x3.split(",").map((x1, x2, _, x4))
    }.toDF
    

    1.3 이상 스파크.

    분할을 사용하여 기능을 폭발 :

    val df = Seq(("A", "B", "x,y,z", "D")).toDF("x1", "x2", "x3", "x4")
    df.withColumn("x3", explode(split($"x3", ",")))
    

    스파크 1.x에서

    DataFrame.explode (스파크 2.X에서 사용되지 않음)

    df.explode($"x3")(_.getAs[String](0).split(",").map(Tuple1(_)))
    
  2. from https://stackoverflow.com/questions/36784735/how-to-flatmap-a-nested-dataframe-in-spark by cc-by-sa and MIT license