반응형
출처
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) 관해 링크를 클릭하시면 더 아실 수 있습니다.
반응형
'Spark' 카테고리의 다른 글
스칼라에서 =와 :=의 차이점은 무엇입니까? (0) | 2019.03.29 |
---|---|
스칼라에서 파라미터:_* 는 무엇을 뜻합니까? (0) | 2019.01.28 |
같은 Sink로 여러개의 Spark Structured Streaming WriteStreams하기 (0) | 2018.11.05 |
왜 spark-shell은 RDD를 import한 class를 가진 파일을 불러오기를 실패할까요? (0) | 2018.09.06 |
스파크에서 fold action이 왜 필요합니까? (0) | 2018.04.08 |