Spark 데이터 프레임의 열을 새 행으로 분할 [Scala]

Kumar_123

다음과 같은 스파크 데이터 프레임의 출력이 있습니다.

Amt | id | num | Start_date | Identifier
43.45 | 19840 | A345 | [2014-12-26, 2013-12-12] | [232323,45466] |
43.45 | 19840 | A345 | [2010-03-16, 2013-16-12] | [34343,45454] |

내 요구 사항은 위의 출력에서 ​​아래 형식으로 출력을 생성하는 것입니다.

Amt | id | num | Start_date | Identifier
43.45 | 19840 | A345 | 2014-12-26 | 232323
43.45 | 19840 | A345 | 2013-12-12 | 45466
43.45 | 19840 | A345 | 2010-03-16 | 34343
43.45 | 19840 | A345 | 2013-16-12 | 45454

누군가가 이것을 달성하도록 도울 수 있습니까?

파벨 유르 첸코

이것이 당신이 찾고있는 것입니까?

import org.apache.spark.sql._
import org.apache.spark.sql.functions._

val sparkSession = ...
import sparkSession.implicits._

val input = sc.parallelize(Seq(
  (43.45, 19840, "A345", Seq("2014-12-26", "2013-12-12"), Seq(232323,45466)),
  (43.45, 19840, "A345", Seq("2010-03-16", "2013-16-12"), Seq(34343,45454))
)).toDF("amt", "id", "num", "start_date", "identifier")

val zipArrays = udf { (dates: Seq[String], identifiers: Seq[Int]) =>
  dates.zip(identifiers)
}

val output = input.select($"amt", $"id", $"num", explode(zipArrays($"start_date", $"identifier")))
  .select($"amt", $"id", $"num", $"col._1".as("start_date"), $"col._2".as("identifier"))

output.show()

다음을 반환합니다.

+-----+-----+----+----------+----------+
|  amt|   id| num|start_date|identifier|
+-----+-----+----+----------+----------+
|43.45|19840|A345|2014-12-26|    232323|
|43.45|19840|A345|2013-12-12|     45466|
|43.45|19840|A345|2010-03-16|     34343|
|43.45|19840|A345|2013-16-12|     45454|
+-----+-----+----+----------+----------+

편집하다:

압축해야하는 여러 열을 원하므로 다음과 같이 시도해야합니다.

val input = sc.parallelize(Seq(
  (43.45, 19840, "A345", Seq("2014-12-26", "2013-12-12"), Seq("232323","45466"), Seq("123", "234")),
  (43.45, 19840, "A345", Seq("2010-03-16", "2013-16-12"), Seq("34343","45454"), Seq("345", "456"))
)).toDF("amt", "id", "num", "start_date", "identifier", "another_column")

val zipArrays = udf { seqs: Seq[Seq[String]] =>
  for(i <- seqs.head.indices) yield seqs.fold(Seq.empty)((accu, seq) => accu :+ seq(i))
}

val columnsToSelect = Seq($"amt", $"id", $"num")
val columnsToZip = Seq($"start_date", $"identifier", $"another_column")
val outputColumns = columnsToSelect ++ columnsToZip.zipWithIndex.map { case (column, index) =>
  $"col".getItem(index).as(column.toString())
}

val output = input.select($"amt", $"id", $"num", explode(zipArrays(array(columnsToZip: _*)))).select(outputColumns: _*)

output.show()

/*
+-----+-----+----+----------+----------+--------------+
|  amt|   id| num|start_date|identifier|another_column|
+-----+-----+----+----------+----------+--------------+
|43.45|19840|A345|2014-12-26|    232323|           123|
|43.45|19840|A345|2013-12-12|     45466|           234|
|43.45|19840|A345|2010-03-16|     34343|           345|
|43.45|19840|A345|2013-16-12|     45454|           456|
+-----+-----+----+----------+----------+--------------+
*/

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

패턴을 기반으로 데이터 프레임의 행을 새 열로 분할하는 문자열

분류에서Dev

데이터 프레임의 배열 값을 새 데이터 프레임으로 분할-Python

분류에서Dev

R 열의 새 줄로 데이터 프레임 분할

분류에서Dev

Spark Scala 데이터 프레임에서 열 분할

분류에서Dev

Spark 데이터 프레임 열을 새 테이블 / 데이터 프레임 형식의 행으로 효율적으로 전치 / 폭발 [pyspark]

분류에서Dev

데이터 프레임을 새 열로 분할 지원

분류에서Dev

Scala 데이터 프레임 열을 중첩 된 JSON으로 Spark

분류에서Dev

열 값으로 데이터 프레임 분할 Scala

분류에서Dev

첫 번째 데이터 프레임 Java의 열을 기반으로 새 열 값으로 새 Spark DataFrame 만들기

분류에서Dev

Pandas 데이터 프레임의 한 열에서 새 데이터 프레임의 여러 열로 데이터를 분할하는 방법

분류에서Dev

Spark : 데이터 프레임에 UDF 적용 DF의 값을 기반으로 새 열 생성

분류에서Dev

중복 분할로 데이터 프레임을 분할하고 새 목록의 이름을 지정합니다.

분류에서Dev

선택적으로 Spark 데이터 프레임 문자열 col을 여러 열로 분할

분류에서Dev

R은 데이터 프레임의 각 행을 두 행으로 분할

분류에서Dev

데이터 프레임 팬더의 줄을 백분율이 지정된 새 줄로 분할하는 방법

분류에서Dev

데이터 세트의 중첩 된 json 문자열을 Spark Scala의 데이터 세트 / 데이터 프레임으로 변환

분류에서Dev

R : 목록을 열로 분할하고 새 데이터 프레임으로 변환

분류에서Dev

하나의 데이터 프레임 열을 효율적으로 분할하여 범주 열의 각 부분에 동일한 값을 할당하는 새 데이터 프레임을 만드는 방법

분류에서Dev

원래 데이터 프레임의 총 행 수를 기준으로 데이터 프레임을 두 데이터 프레임으로 분할하는 방법

분류에서Dev

데이터 프레임의 다중 인덱스 데이터 프레임을 열 이름으로 분할

분류에서Dev

열의 값에 따라 데이터 프레임을 하위 데이터 프레임으로 분할

분류에서Dev

Spark Scala 데이터 프레임 분할 및 IF

분류에서Dev

Spark 데이터 프레임 행을 열로 분할하는 방법은 무엇입니까?

분류에서Dev

r의 특정 행으로 데이터 프레임을 분할하는 방법

분류에서Dev

데이터 프레임 값을 Scala List로 Spark

분류에서Dev

R : 데이터 프레임을 열로 분할하고 행으로 재결합

분류에서Dev

여러 값이있는 Pandas 데이터 프레임 열 문자열을 별도의 행으로 분할

분류에서Dev

논리식을 기반으로 R 데이터 프레임의 새 열에 값 할당

분류에서Dev

Spark (Scala)의 데이터 프레임 열에서 빈 값 계산

Related 관련 기사

  1. 1

    패턴을 기반으로 데이터 프레임의 행을 새 열로 분할하는 문자열

  2. 2

    데이터 프레임의 배열 값을 새 데이터 프레임으로 분할-Python

  3. 3

    R 열의 새 줄로 데이터 프레임 분할

  4. 4

    Spark Scala 데이터 프레임에서 열 분할

  5. 5

    Spark 데이터 프레임 열을 새 테이블 / 데이터 프레임 형식의 행으로 효율적으로 전치 / 폭발 [pyspark]

  6. 6

    데이터 프레임을 새 열로 분할 지원

  7. 7

    Scala 데이터 프레임 열을 중첩 된 JSON으로 Spark

  8. 8

    열 값으로 데이터 프레임 분할 Scala

  9. 9

    첫 번째 데이터 프레임 Java의 열을 기반으로 새 열 값으로 새 Spark DataFrame 만들기

  10. 10

    Pandas 데이터 프레임의 한 열에서 새 데이터 프레임의 여러 열로 데이터를 분할하는 방법

  11. 11

    Spark : 데이터 프레임에 UDF 적용 DF의 값을 기반으로 새 열 생성

  12. 12

    중복 분할로 데이터 프레임을 분할하고 새 목록의 이름을 지정합니다.

  13. 13

    선택적으로 Spark 데이터 프레임 문자열 col을 여러 열로 분할

  14. 14

    R은 데이터 프레임의 각 행을 두 행으로 분할

  15. 15

    데이터 프레임 팬더의 줄을 백분율이 지정된 새 줄로 분할하는 방법

  16. 16

    데이터 세트의 중첩 된 json 문자열을 Spark Scala의 데이터 세트 / 데이터 프레임으로 변환

  17. 17

    R : 목록을 열로 분할하고 새 데이터 프레임으로 변환

  18. 18

    하나의 데이터 프레임 열을 효율적으로 분할하여 범주 열의 각 부분에 동일한 값을 할당하는 새 데이터 프레임을 만드는 방법

  19. 19

    원래 데이터 프레임의 총 행 수를 기준으로 데이터 프레임을 두 데이터 프레임으로 분할하는 방법

  20. 20

    데이터 프레임의 다중 인덱스 데이터 프레임을 열 이름으로 분할

  21. 21

    열의 값에 따라 데이터 프레임을 하위 데이터 프레임으로 분할

  22. 22

    Spark Scala 데이터 프레임 분할 및 IF

  23. 23

    Spark 데이터 프레임 행을 열로 분할하는 방법은 무엇입니까?

  24. 24

    r의 특정 행으로 데이터 프레임을 분할하는 방법

  25. 25

    데이터 프레임 값을 Scala List로 Spark

  26. 26

    R : 데이터 프레임을 열로 분할하고 행으로 재결합

  27. 27

    여러 값이있는 Pandas 데이터 프레임 열 문자열을 별도의 행으로 분할

  28. 28

    논리식을 기반으로 R 데이터 프레임의 새 열에 값 할당

  29. 29

    Spark (Scala)의 데이터 프레임 열에서 빈 값 계산

뜨겁다태그

보관