ハイブ:グループ化された質問:式がグループ化されていないキー



Hive Group Question



ハイブで別の問題が発生しました:

mysqlの元のsqlステートメントは



SELECT DATEBUF, CITYID, CHANNELID FROM STAT_CVCHNEW WHERE DATEBUF>=20110517 AND DATEBUF<=20110519 GROUP BY DATEBUF, CITYID

[sql] プレーンビュー コピー

結果はDATEBUFとCITYIDでグループ化する必要があり、各グループはCHANNELIDの最初の値に対応します。

しかし、エラーはハイブで報告されます



[sql] プレーンビュー コピー
  1. 失敗:SemanticException [エラー10025]:行1:20式ない グループ 沿って キー 'uc'

次に、Googleでhttp://stackoverflow.com/questions/5746687/hive-expression-not-in-group-by-keyにアクセスして、これを解決します。

ハイブのudaf関数を使用します。 collect_set()

[sql] プレーンビュー コピー
  1. 選択するDATEBUF、CITYID、collect_set(CHANNELID)からPWD_STAT_CVCHNEWどこDATEBUF = 20130810そしてcityid<3 グループ 沿ってDATEBUF、CITYID
返されるのは、datebufとcityidの各グループに対応するすべてのchannelidのコレクションです。



[sql] プレーンビュー コピー
  1. 選択するDATEBUF、CITYID、collect_set(CHANNELID)[0]からPWD_STAT_CVCHNEWどこDATEBUF = 20130810そしてcityid<3 グループ 沿ってDATEBUF、CITYID
OK

ただし、返される結果のchannelidは、hdfsに格納されている順序の最初のものです。

実際、これは通常の状況では使用されていないようです

再投稿元:http://blog.csdn.net/wenlong237/article/details/10227419