복붙노트

[SCALA] 스파크에서 편평 행

SCALA

스파크에서 편평 행

나는 스칼라를 사용하여 불꽃에 대한 몇 가지 테스트를하고있는 중이 야. 우리는 일반적으로 다음의 예처럼 조작 할 필요가 JSON 파일을 읽을 수 :

test.json :

{"a":1,"b":[2,3]}
val test = sqlContext.read.json("test.json")

어떻게 다음과 같은 형식으로 변환 할 수 있습니다 :

{"a":1,"b":2}
{"a":1,"b":3}

해결법

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

    1.당신은 기능을 폭발 사용할 수 있습니다 :

    당신은 기능을 폭발 사용할 수 있습니다 :

    scala> import org.apache.spark.sql.functions.explode
    import org.apache.spark.sql.functions.explode
    
    
    scala> val test = sqlContext.read.json(sc.parallelize(Seq("""{"a":1,"b":[2,3]}""")))
    test: org.apache.spark.sql.DataFrame = [a: bigint, b: array<bigint>]
    
    scala> test.printSchema
    root
     |-- a: long (nullable = true)
     |-- b: array (nullable = true)
     |    |-- element: long (containsNull = true)
    
    scala> val flattened = test.withColumn("b", explode($"b"))
    flattened: org.apache.spark.sql.DataFrame = [a: bigint, b: bigint]
    
    scala> flattened.printSchema
    root
     |-- a: long (nullable = true)
     |-- b: long (nullable = true)
    
    scala> flattened.show
    +---+---+
    |  a|  b|
    +---+---+
    |  1|  2|
    |  1|  3|
    +---+---+
    
  2. from https://stackoverflow.com/questions/32906613/flattening-rows-in-spark by cc-by-sa and MIT license