2017-01-06 4 views
1

Spala를 사용하여 Spark을 사용하여 데이터 처리를하고 있습니다. 데이터 프레임에 XML 데이터가 매핑되었습니다. UDF에 매개 변수로 행을 전달하고 두 개의 복합 유형 객체를 목록으로 추출하려고합니다. 스파크는 오류 다음 날주고있다 :Spark-Scala에서 Seq [Row]를 반환합니다. UDF

Exception in thread "main" java.lang.UnsupportedOperationException: Schema for type org.apache.spark.sql.Row is not supported

def testUdf = udf((testInput: Row) => { 
    val firstObject = testInput.getAs[Row]("Object1") 
    val secondObject = testInput.getAs[Row]("Object2") 
    val returnObject = Seq[firstObject,secondObject] 

    returnObject 
}) 

가 내가 뭘 잘못 말해 주 시겠어요. 감사.

답변

2

UDF가 개체를 반환 할 수 없습니다. 반환 형식은 Data Types table에 스칼라의 값 형식 열에 열거 된 형식 중 하나 여야합니다.

좋은 소식은 여기에 UDF가 필요 없다는 것입니다.

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

df.select(array(col("Object1"), col("Object2")) 

또는

df.select(array(col("path.to.Object1"), col("path.to.Object2")) 

Object1Object2 아닌 경우 최고 수준의 열은 다음과 같습니다 Object1Object2 가 같은 스키마이있는 경우 array 기능을 사용할 수 있습니다 (어쨌든, 그렇지 않으면 작동하지 않을 것입니다).