簡體   English   中英

更改Spark Dataframe的架構

[英]Change schema of Spark Dataframe

我有一個DataFrame[SimpleType] SimpleType是一個包含16個字段的類。 但是我必須將其更改為DataFrame[ComplexType]

我只有ComplexType的架構(有400多個字段),沒有這種類型的案例類。 我知道映射必要的字段(但我不知道如何從DataFrame[SimpleType] -> DataFrame[ComplexType]映射它),其余的字段我想保留為空。 有誰知道如何以最有效的方式做到這一點?

謝謝

編輯

class SimpleType{
field1
field2
field3
field4
.
.
.
field16
}

我有包含這種簡單類型的DataFrame。 我也有一個復雜類型的架構。 我想轉換此DataFrame[SimpleType] -> Dataframe[ComplexType]

很簡單:

// function to get field names
import scala.reflect.runtime.universe._


def classAccessors[T: TypeTag]: List[String] = typeOf[T].members.collect {
    case m: MethodSymbol if m.isCaseAccessor => m}
.toList.map(s => s.name.toString)

val typeComplexFields = classAccessors[ComplexType]
val newDataFrame = simpleDF
                   .select(typeComplexFields
                            .map(c => if (simpleDF.columns.contains(c)) col(c) else lit(null).as(c)) : _*)
.as[ComplexType]

還要感謝Scala的作者 從案例類中獲取字段名稱列表 ,我復制了他的函數以獲取修改后的字段名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM