web-dev-qa-db-ja.com

SQLクエリHadoop Java

Java code tableHiveCelltableHiveWiFiから2つのテーブルを作成しました。

次のSQLコマンドを実行しようとすると:

select count(UEs.cnc) as 'Active UEs' 
                      ^
from 
(select distinct cnc from tableHiveCell wifi  
  union 
 select distinct cnc from tableHiveCell cell)
 as UEs;

エラーが発生します:

Java.sql.SQLException:
Query returned non-zero code: 11,
cause: FAILED: Parse Error: line 1:22 mismatched input 'as' expecting FROM near ')' in from clause
at org.Apache.hadoop.Hive.jdbc.HiveStatement.executeQuery(HiveStatement.Java:189).

私は何か見落としてますか?

[編集1]

私は試した:

select count(UEs.cnc) as 'Active UEs' 
                      ^
from 
(select distinct cnc from tableHiveCell wifi)  
  union 
 (select distinct cnc from tableHiveCell cell)
 as UEs;

同じエラー

[編集2]

私は試した:

select count(UEs.cnc) as Active_UEs
 from (select distinct cnc from tableHiveCell wifi
  union ALL 
 select distinct cnc from tableHiveCell cell) as UEs;
                                              ^ 

同じエラーが発生しますが、最後にas

 line 1:142 mismatched input 'as' expecting Identifier near ')' in subquery source
11
Maxim Shoustin

回答フォームでリクエストされたとおり:Hadoopは、サブクエリのASキーワードを介したエイリアスに問題があるようで、ASキーワードなしでエイリアスを簡単に割り当てることができます。

例はここにあります: https://www.inkling.com/read/hadoop-definitive-guide-tom-white-3rd/chapter-12/querying-data

そして、将来の訪問者のために引用されています(サブクエリのmtエイリアスを参照):

SELECT station, year, AVG(max_temperature)
FROM (
  SELECT station, year, MAX(temperature) AS max_temperature
  FROM records2
  WHERE temperature != 9999
    AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9)
  GROUP BY station, year
) mt
GROUP BY station, year;
7
Najzero