WritableStringObjectInspector无法强制转换为BooleanObjectInspector

问题描述 投票:0回答:1

每次我运行一个来自我的java程序的OR条件的配置单元查询时,我都会收到以下错误:

引起:java.lang.ClassCastException:org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector无法强制转换为org.apache.hadoop中的org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector。位于org.apache.hadoop的org.apache.hadoop.hive.ql.udf.generic.GenericUDF.initializeAndFoldConstants(GenericUDF.java:117)的hive.ql.udf.generic.GenericUDFOPOr.initialize(GenericUDFOPOr.java:53)。位于org.apache.hadoop.hive的org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory $ DefaultExprProcessor.getXpathOrFuncExprNodeDesc(TypeCheckProcFactory.java:958)中的hive.ql.plan.ExprNodeGenericFuncDesc.newInstance(ExprNodeGenericFuncDesc.java:232)。位于org.apache.hadoop.hive.ql的org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90)的ql.parse.TypeCheckProcFactory $ DefaultExprProcessor.process(TypeCheckProcFactory.java:1175)。 lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94)at org.apache.hadoop.hive.ql.lib.Def agraGraphWalker.dispatch(DefaultGraphWalker.java:78)org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.walk(DefaultGraphWalker.java:132)org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking( DefaultGraphWalker.java:109)org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory.genExprNode(TypeCheckProcFactory.java:192)org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory.genExprNode(TypeCheckProcFactory.java: 145)org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genAllExprNodeDesc(SemanticAnalyzer.java:10650)org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:10606)at org位于org.apache.hadoop的org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genFilterPlan(SemanticAnalyzer.java:2736)的.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:10577) .hive.ql.parse.SemanticAnalyzer.genFilterPlan(SemanticAnalyzer.java:2717)位于org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:8 972)org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9884)org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9777)at org位于org.apache.hadoop的org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10261)的.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genOPTree(SemanticAnalyzer.java:10250)位于org.apache.hadoop.hive.ql的org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:222)中的.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10141) .driver.compile(Driver.java:430)位于org.apache.hadoop.hive.ql.Driver.compile(Driver。 :1123)org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1110)org.apache.hive.service.cli.operation.SQLOperation.prepare(SQLOperation.java:99)...还有26个

但是当我试图运行以下java程序只是为了测试转换时,它被成功转换。

import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector;
public class MyClass {
    public static void main(String[] args) {
         ObjectInspector[] arguments = new ObjectInspector[2];
        BooleanObjectInspector boi0 = (BooleanObjectInspector) arguments[0];
        BooleanObjectInspector boi1 = (BooleanObjectInspector) arguments[1];
        System.out.println(boi1);
    }
}

我的类路径中只有一个jar文件,它是hive-exec-5.5.4。所以我没有看到任何jar冲突。还有其他方法吗?

java hadoop hive apache-pig hiveql
1个回答
2
投票

我的错,

查询中OR子句的右端在键之后没有条件。我已经解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.