반응형
출처 : https://bitdatatechie.com/2019/09/13/spark-journal-return-multiple-dataframes-from-a-scala-method/
Spark Journal: Scala 메소드로부터 여러 개의 dataframe을 리턴
지금까지, 저는 Spark에 한해서 글을 남기는 데 집중하였지만, Spark Framework를 사용할 때 사용되는 주요 언어 중 하나는 당신이 알 듯이 Scala입니다. 흥미로운 사용 사례를 보여주기 위해 Spark API와 Scala 언어 모두 사용할 것입니다.
이번 작업은 Scala 메소드로부터 여러 개의 dataframe을 리턴하는 것입니다. Int, String, Dataframe일 수 있는 리턴 값이 있을 때 메소드의 리턴 부분에 1개의 값만으로 이 작업을 해왔습니다.
저의 동료와 Architect는 이를 매우 쉽게 할 수 있는 다른 옵션을 저에게 보여주었고 도움이 되었습니다.
더 읽기 전에 StackOverflow의 이 게시물을 살펴 보는 것이 좋습니다. 이 방법은 Scala에서 List와 Tuple의 개념적 차이를 분명히 하는 데 도움이 됩니다.
접근 1
리턴 값으로 List를 사용
import org.apache.spark.sql.DataFrame
def returMultipleDf : List[DataFrame] = {
val dataList1 = List((1,"abc"),(2,"def"))
val df1 = dataList1.toDF("id","Name")
val dataList2 = List((3,"ghi","home"),(4,"jkl","ctrl"))
val df2 = dataList2.toDF("id","Name","Type")
List(df1, df2)
}
val dfList = returMultipleDf
val dataFrame1 = dfList(0)
val dataFrame2 = dfList(1)
dataFrame2.show
+---+----+----+
| id|Name|Type|
+---+----+----+
| 3| ghi|home|
| 4| jkl|ctrl|
+---+----+----+
접근 2
리턴 값으로 Tuple을 사용
import org.apache.spark.sql.DataFrame
def returMultipleDf : (DataFrame, DataFrame) = {
val dataList1 = List((1,"abc"),(2,"def"))
val df1 = dataList1.toDF("id","Name")
val dataList2 = List((3,"ghi","home"),(4,"jkl","ctrl"))
val df2 = dataList2.toDF("id","Name","Type")
(df1, df2)
}
val (df1, df2) = returMultipleDf
df2.show
+---+----+----+
| id|Name|Type|
+---+----+----+
| 3| ghi|home|
| 4| jkl|ctrl|
+---+----+----+
반응형
'Spark' 카테고리의 다른 글
Spark - 비어있는 Dataset을 만드는 방법 (0) | 2021.04.22 |
---|---|
PySpark에서 행 버리기 (0) | 2021.04.20 |
스파크 스트리밍에 관해 start(), awaitTermination(), stop()의 사용 사례는 무엇입니까? (0) | 2019.05.16 |
스칼라에서 =와 :=의 차이점은 무엇입니까? (0) | 2019.03.29 |
스칼라에서 파라미터:_* 는 무엇을 뜻합니까? (0) | 2019.01.28 |