2013-08-13 10 views
8

Tôi đã tạo hai bảng từ mã java tableHiveCelltableHiveWiFi.Nhận lỗi "đầu vào không khớp" như 'mong đợi TỪ gần') 'trong mệnh đề từ "khi chạy truy vấn sql Hadoop Java

Khi tôi cố gắng chạy theo lệnh sql:

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

tôi nhận được một lỗi:

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). 

đã làm tôi nhớ một cái gì đó?

[EDIT 1]

tôi đã cố gắng:

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

Cùng một lỗi

[EDIT 2]

tôi đã cố gắng:

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

Lấy lỗi tương tự nhưng cuối cùng as:

line 1:142 mismatched input 'as' expecting Identifier near ')' in subquery source 
+0

bạn có thể thử tháo "là" từ khóa và chỉ cần nêu rõ bí danh là " Ues hoạt động "và" UE "không có từ khóa AS? một số triển khai sql chỉ đơn giản là không có điều đó (MS?) – Najzero

+0

Khi tôi chạy 'chọn đếm (cnc) như boo từ tableHiveCell' nó hoạt động, không nghĩ rằng vấn đề' as' của nó. Cảm ơn –

+0

tốt, sau đó chuỗi duy nhất ''' có thể là vấn đề của bạn hãy thử dấu ngoặc kép :-) – Najzero

Trả lời

6

Theo yêu cầu bằng hình thức trả lời: Hadoop dường như có vấn đề với bí danh qua AS từ khóa trên các truy vấn con và bạn có thể dễ dàng gán bí danh mà không có sự AS Từ khoá.

Ví dụ có thể được tìm thấy ở đây: https://www.inkling.com/read/hadoop-definitive-guide-tom-white-3rd/chapter-12/querying-data

Và trích dẫn cho du khách trong tương lai (xem mt bí danh cho subquery):

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; 
Các vấn đề liên quan