코드로 보자
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
// 예시 DataFrame 생성
val data = Seq(
(1, Array(Row("1", "A"), Row("2", "B"), Row("3", "C"))),
(2, Array(Row("4", "D"), Row("5", "E"), Row("6", "F")))
)
val schema = StructType(Seq(
StructField("id", IntegerType, true),
StructField("items", ArrayType(StructType(Seq(
StructField("number", StringType, true),
StructField("letter", StringType, true)
)), true), true)
))
val df = spark.createDataFrame(data).toDF("id", "items")
// 1. 컬럼 타입 변경 : id의 타입을 IntegerType -> StringType으로 변경
val modifiedDF1 = df.withColumn("id", col("id").cast(StringType))
modifiedDF.printSchema()
// 2. ArrayType 컬럼의 element의 타입 변경 : items 배열의 number 필드를 IntegerType으로 변경
val modifiedDF2 = df.withColumn("items", expr("transform(items, x -> struct(CAST(x.number AS INT) AS number, x.letter AS letter))"))
modifiedDF.printSchema()
'Spark' 카테고리의 다른 글
Spark 성능 튜닝 (0) | 2024.11.10 |
---|---|
Iceberg 시작하기 - 설치/SparkStreaming/Hive연동 (0) | 2024.07.01 |
IntelliJ Spark Scala 환경 세팅하기! + Scala class가 보이지 않는 경우 해결 방법! (0) | 2021.06.24 |
Spark On Yarn 설치하기! (2) | 2020.12.08 |