2015-01-21 38 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