Tan*_*yan 2 java hadoop hive apache-pig hiveql
每次我运行一个包含来自 java 程序的 OR 条件的 hive 查询时,我都会收到以下错误,
引起原因:java.lang.ClassCastException:org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector无法转换为org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector。 hive.ql.udf.generic.GenericUDFOPOr.initialize(GenericUDFOPOr.java:53) 位于 org.apache.hadoop.hive.ql.udf.generic.GenericUDF.initializeAndFoldConstants(GenericUDF.java:117) 位于 org.apache.hadoop。 hive.ql.plan.ExprNodeGenericFuncDesc.newInstance(ExprNodeGenericFuncDesc.java:232) 位于 org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.getXpathOrFuncExprNodeDesc(TypeCheckProcFactory.java:958) 位于 org.apache.hadoop.hive。 ql.parse.TypeCheckProcFactory$DefaultExprProcessor.process(TypeCheckProcFactory.java:1175) 位于 org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90) 位于 org.apache.hadoop.hive.ql。 lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) 在 org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) 在 org.apache.hadoop.hive.ql.lib.DefaultGraphWalker。步行(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) 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:10577) 在 org.apache .hadoop.hive.ql.parse.SemanticAnalyzer.genFilterPlan(SemanticAnalyzer.java:2736) 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genFilterPlan(SemanticAnalyzer.java:2717) 在 org.apache.hadoop.hive .ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:8972) 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9884) 在 org.apache.hadoop.hive.ql.parse .SemanticAnalyzer.genPlan(SemanticAnalyzer.java:9777)在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genOPTree(SemanticAnalyzer.java:10250)在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal (SemanticAnalyzer.java:10261)在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10141)在org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java :222)在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:430)在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:305)在org.apache。 hadoop.hive.ql.Driver.compileInternal(Driver.java: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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的类路径中只有一个 jar 文件,即 hive-exec-5.5.4。所以我没有看到任何 jar 冲突。还有其他解决方案吗?
| 归档时间: |
|
| 查看次数: |
17502 次 |
| 最近记录: |