Давайте проанализируем случай и возможные причины, когда это исключение может быть выдано.
Row row = hiveContext.sql("select info, name, desc, id from users.payment where dt between '2018-05-09' and '2018-05-09'").first();
Если значение row
выше вернуло что-то вроде:
[null, Kevin, cash, 300]
Попытка получить getDouble(0)
приведет к java.lang.NullPointerException: Value at index 0 in null
Вы можете попробовать следующий подход:
Row row = hiveContext.sql("select round(avg(amount), 4) from users.payment where dt between '2018-05-09' and '2018-05-09'").first();
if (!row.isNullAt(0))
double d = row.getDouble(0);
else
logger.error("Value at index zero is null");
Если вы проверите источники, класс библиотеки делает наоборот:
private static Object getAnyValAs(Row $this, int i) {
if($this.isNullAt(i)) {
throw new NullPointerException((new StringContext(scala.Predef..MODULE$.wrapRefArray((Object[])(new String[]{"Value at index ", " is null"})))).s(scala.Predef..MODULE$.genericWrapArray(new Object[]{BoxesRunTime.boxToInteger(i)})));
} else {
return $this.getAs(i);
}
}