Я пытаюсь написать Hive UDF для выполнения поиска в таблице Hbase. И вместо того, чтобы делать get (). Я переопределяю loadAll () , и это возвращает кеш [String, String] . Как только loadAll () загружает все .
x refCache.getAll (ImmutableList.of ("intial")); // Чтобы загрузить все ключи в кеш.
Тогда После загрузки я делаю get (Key), чтобы получить соответствующее значение.
xrefCache.get(key)
Запрос успешного выполнения (1):
SELECT getVal("10","s1:ref_table","cf1:id") as idVal FROM testLook.dummy limit 1;
Запрос Fail Run (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 at
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 * 1029 *
Любые указатели были бы полезны. Заранее спасибо