2016-10-20 8 views
0

sparkアプリケーションを使用してs3データにアクセスしようとしています。 Spark SQLを適用してデータを取得しています。それはグループバイカットをしていません。Spark SQLでグループ化、並べ替え

DataFrame summaryQuery=sql.sql("Select score from summary order by updationDate desc); 
summaryQuery.groupBy("sessionId").count().show(); 
summaryQuery.show(); 

また、私は直接

DataFrame summaryQuery=sql.sql("Select score from summary group by sessionId order by updationDate desc); 
summaryquery.show(); 

それをしようとしています。しかし、両方のケースでは、私はSQL例外を取得しています。

Exception in thread "main" org.apache.spark.sql.AnalysisException: expression 'score' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() (or first_value) if you don't care which value you get.; 

データのクエリ方法を指定してください。

+2

何を達成しようとしていますか?選択したクエリにグループごとの列が表示され、集計関数を適用する必要があります。サンプルの入力と出力のデータセットを投稿してください。結果を得るためにお手伝いします。 –

答えて

0

Spark SQLでは、column_nameがgroup by句に存在しない場合は、最初の(column_name)またはlast(column_name)関数または任意の集計関数でラップする必要があります。フェッチされた行からそれぞれ最初または最後の値が取られます。

DataFrame summaryQuery=sql.sql("Select first(score) from summary group by sessionId order by updationDate desc); 
summaryquery.show(); 
関連する問題