【オリジナル】アンクル経験共有(83)インパラ複数の別個の選択実行

などの実行など、選択に複数回数の異なるインパラを実行するときに文句を言うのでしょう

キーカウント(別個column_a)を選択し、キーによってTEST_TABLE群から(異なるCOLUMN_B)をカウント

文句を言うでしょう

提出クエリ:2019年9月28日午後12時34分20秒(コーディネーター:のhttp:// Dataoneの-001:25000)
ERROR:AnalysisException:すべてのDISTINCT集約関数は、カウント(DISTINCT column_a)などのパラメータの同じセットを持っている必要があります。
逸脱機能:数(DISTINCT COLUMN_B)
の代わりに、推定カウントが許容されている場合はCOUNT(DISTINCT)の)NDVを(使用を検討してください。するAPPX_COUNT_DISTINCT queryオプションを有効にし
、自動的にこの書き換えを行います。

その後、いくつかの方法があります。

1つの使用近似

真APPX_COUNT_DISTINCT = 1.1に設定され
、すなわちNDV(column_a)、個別のカウント1.2 NDV
これらの2つの方法は、同一の基本的な実装が提供されるAPPX_COUNT_DISTINCTが自動的NDV、すべての既知のNDV(個別値の数)、使用として別個書き換えを数えます
カーディナリティ(基数数)は、基礎となる実装は、基準を参照して、確率アルゴリズム(ハイパーloglog関数がカウント)類似HLLCあります。

結果と同様の近似値を返す集約関数  、  「個別値の数を」。これは、の組み合わせよりもはるかに高速である   と  、メモリの一定量を使用していますので、少ないメモリ集約型の高カーディナリティの列のためです。COUNT(DISTINCT col)COUNTDISTINCT

2正確な値を使用して

以下のような、複数のサブクエリを書き換え、その後、参加

a.key、a.count_a、b.count_bを選択し
(選択キーキーによってTEST_TABLE群から別個column_a)count_a(カウント)Aジョイン
(キー選択キーによってTEST_TABLE群から別個COLUMN_B)COUNT_B(カウント)でB .KEY = b.key

 

参考:

NDV

http://impala.apache.org/docs/build/html/topics/impala_ndv.html#ndv

APPX_COUNT_DISTINCT

http://impala.apache.org/docs/build/html/topics/impala_appx_count_distinct.html

他の

https://stackoverflow.com/questions/39236076/impala-all-distinct-aggregate-functions-need-to-have-the-same-set-of-parameters

 

おすすめ

転載: www.cnblogs.com/barneywill/p/11601234.html