2016-07-26 3 views
0

계정 번호와 가장 최근의 업데이트 날짜가있는 하이브 테이블이 있습니다. 모든 계정이 매일 업데이트되는 것은 아니므로 특정 날짜의 모든 레코드를 간단히 선택할 수는 없습니다. 계정 번호별로 그룹화 한 다음 내림차순으로 정렬하여 각 계정에 대해 가장 최근의 2 일간을 가져 가야합니다. 지금까지 내 스크립트를스파크 스칼라에서 하이브 테이블을 사용하여 내림차순 정렬

sc.setLogLevel("ERROR") 
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 
import org.apache.spark.sql.functions._ 
import sqlContext.implicits._ 
val df1 = sqlContext.sql("FROM mydb.mytable SELECT account_num, last_updated") 
val DFGrouped = df1.groupBy("account_num").orderBy(desc("data_dt")) 

내가지고있어 오류가 발생 해 orderBy에 :

value orderBy is not a member of org.apache.spark.sql.GroupedData 

내가 여기 일을해야하는지에 대한 어떤 생각?

+0

하위 그룹 내에서. 그렇다면 다음과 같이 시도해보십시오 :'groupBy (...). map (_. orderBy (...))' – jwvh

+0

@jwh 작동하지 않을 것입니다. 'groupBy'는 단지 논리 연산입니다. – zero323

답변

1

이 문제는 top N by group 문제이므로 여기서는 그룹화가 작동하지 않습니다.

당신은 순위에 행을 선택하여 다음, 날짜 내림차순으로 계정 ID와 순서에 따라 파티션 특히, 순위를() Spark SQL window functions를 사용할 필요가 < = 2. 요소를 주문하려는 것 같습니다

관련 문제