2016-07-26 27 views
0

アカウント番号と最新の更新日を持つハイブテーブルがあります。すべてのアカウントが毎日更新されるわけではないので、特定の日からすべてのレコードを単純に選択することはできません。アカウント番号でグループ化し、降順でソートして、各アカウントの最新の2日間を取る必要があります。これまでの私のスクリプト:spark scalaのハイブテーブルを降順でソート

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.要素を注文したいように見えます

関連する問題