반응형

출처

https://stackoverflow.com/questions/30674376/apache-spark-get-elements-of-row-by-name


Apache Spark: Row의 element값을 이름으로 얻기

Apache Spark(저는 Scala 인터페이스를 사용합니다)의 DataFrame 객체에서, 객체를 순회한다고 했을 때 이름으로 값들을 추출하는 방법이 있을까요? 저는 정말 어색한 방법으로 이 작업을 했습니다.

def foo(r: Row) = {
  val ix = (0 until r.schema.length).map( i => r.schema(i).name -> i).toMap
  val field1 = r.getString(ix("field1"))
  val field2 = r.getLong(ix("field2"))
  ...
}
dataframe.map(foo)

저는 더 좋은 방법이 있을 것이라 생각합니다. 제 작업은 매우 장황한 방법입니다. 이는 추가 구조를 만들어야 하고 명시적으로 type도 알아야 합니다. 만약 타입이 틀리면 프로그램은 compile-time 오류보다 실행시 exception이 발생할 것입니다.

1개의 답변만 발췌

당신은 org.apache.spark.sql.Row로부터 "getAs"를 사용할 수 있습니다.

r.getAs("field1")
r.getAs("field2")

getAs(java.lang.String fieldName) 관해 링크를 클릭하시면 더 아실 수 있습니다.

반응형

+ Recent posts