Spark
Apache Spark: Row의 element값을 이름으로 얻기
라이언(Ryan)
2018. 11. 12. 18:09
반응형
출처
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) 관해 링크를 클릭하시면 더 아실 수 있습니다.
반응형