CacheLoader中的NullPointerException

时间:2018-08-28 16:36:14

标签: hadoop caching hive user-defined-functions hiveql

我试图编写一个Hive UDF在Hbase表中进行查找。而不是做get()。我覆盖 loadAll(),并返回 cache [String,String] 。一旦loadAll()加载了所有

x refCache.getAll(ImmutableList.of(“ intial”)); //将所有密钥加载到缓存中。

然后加载后,我正在执行get(Key)以获取适当的Value。

xrefCache.get(key)

成功运行查询(1):

SELECT getVal("10","s1:ref_table","cf1:id") as  idVal FROM testLook.dummy limit 1;

运行失败查询(2):

 SELECT getVal(id,"s1:ref_table","cf1:id") as  idVal FROM testLook.dummy limit 1;

注意:

当我运行Hive Query(1)时,它运行良好。但是当我运行Query(2)时, 在非本地模式下触发查询,出现以下NullPointer异常。

例外:

  

com.google.common.util.concurrent.UncheckedExecutionException:   java.lang.NullPointerException在   com.google.common.cache.LocalCache.loadAll(LocalCache.java:4056)在   com.google.common.cache.LocalCache.getAll(LocalCache.java:4014)在   com.google.common.cache.LocalCache $ LocalLoadingCache.getAll(LocalCache.java:4865)   在   com.go.udfs.HbaseLookup.getGUIDValue(HbaseLookup.java:250)   在com.go.udfs.HbaseLookup.evaluate(HbaseLookup.java:234)   在com.go.udfs.HbaseLookup.evaluate(HbaseLookup.java:33)   在   org.apache.hadoop.hive.ql.exec.ExprNodeGenericFuncEvaluator._evaluate(ExprNodeGenericFuncEvaluator.java:186)   在   org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator.evaluate(ExprNodeEvaluator.java:77)   在   org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator.evaluate(ExprNodeEvaluator.java:65)   在   org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:77)   在org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)   在   org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:98)   在   org.apache.hadoop.hive.ql.exec.MapOperator $ MapOpCtx.forward(MapOperator.java:157)   在   org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:497)   在   org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:170)   在org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)处   org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:459)在   org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)在   org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:164)在   java.security.AccessController.doPrivileged(本机方法),位于   javax.security.auth.Subject.doAs(Subject.java:422)在   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)   在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)导致   创建人:java.lang.NullPointerException   com.go.udfs.HbaseLookup.access $ 300(HbaseLookup.java:33)   在   com.go.udfs.HbaseLookup $ 1.loadAll(HbaseLookup.java:146)   在com.google.common.cache.LocalCache.loadAll(LocalCache.java:4049)   ...另外22个

任何指针都会有所帮助。在此先感谢

0 个答案:

没有答案