2015-01-21 59 views
-1

我想運行一個配置單元查詢,以便能夠從一個表中除以另一個表中列的總和。 我必須加入表格嗎?使用兩個表中的值在Hive中運行查詢

下面的代碼生成錯誤:

Select 100*(Num_files/total_Num_files) from jvros_p2, jvros_p3; 

FAILED: Parse Error: line 1:75 mismatched input ',' expecting EOF near 'jvros_p2'

是,jvros_p3是單行單個列表

NUM_FILES是在jvros_p2列和total_Num_files是在jvros_p3單個值。

+0

您運行的是哪個版本的Hive?我能夠在Hive 0.13.0上沒有錯誤地運行你的查詢。注意:我定義了一個名爲'jvros_p2'的表,其中包含一個名爲'num_files'的列,並使用包含任意整數的三行來填充它,並且還定義了一個名爲'jvros_p3'的表,其中還有一列(單行)整數。 – rchang 2015-01-21 14:17:13

+0

我相信它的舊版本0.7.1 由於其他工作限制,我無法升級 – Javad 2015-01-21 14:40:16

+0

我沒有機會獲得安裝0.7.1的最小安裝來測試,但我認爲解決方案可能是明確的指定'JOIN'而不是逗號分隔的隱式聯接表示法(請參閱我的答案)。 – rchang 2015-01-21 15:48:44

回答

1

您的舊版本可能是您的符號不起作用的原因。試試這個:

SELECT 100 * (Num_files/total_Num_files) FROM jvros_p2 JOIN jvros_p3; 

我懷疑,如果你最終能夠通過逗號分隔的表升級到至少0.13,隱式連接符號將每HIVE-5558支持。

+0

感謝@rchang的回覆和幫助。但仍然沒有運氣 從jvros_p2中選擇100 *(Num_files/total_Num_files)join jvros_p3; FAILED:配置單元內部錯誤:顯示java.lang.NullPointerException在org.apache(空) 顯示java.lang.NullPointerException 在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinReduceSinkChild(SemanticAnalyzer.java:4443) .hadoop.hive.ql.parse.SemanticAnalyzer.genJoinOperator(SemanticAnalyzer.java:4548) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinPlan(SemanticAnalyzer.java:4707) at org.apache.hadoop .hive.ql.parse.Semanti ..... – Javad 2015-01-21 15:47:55

+0

@Javad對不起,它沒有工作。我想現在我最好的建議是儘可能升級。 :) 祝你好運。 – rchang 2015-01-21 15:50:04