关于hive数据库查询操作出现的空指针问题

StringBuilder pSql = new StringBuilder();
    pSql.append(" select p.* from bigdata_app_push_seq_").append(dateTime);
    pSql.append(" p ");
    pSql.append(" where p.push_time >=").append(dayStartTime);
    pSql.append(" and p.push_time <").append(dayEndTime);
    List<Map<String, String>> pushList = hiveDbop.dbSearch(pSql.toString());

当程序执行到查询hive数据时,并没有直接进入dbSearch方法,而是直接抛出空指针异常.
java.lang.NullPointerException
at com.eos.hms.analysis.AppPushAnalysis.appPushStatistics(AppPushAnalysis.java:282)
at com.eos.hms.analysis.AppPushAnalysis.execDay(AppPushAnalysis.java:192)
at com.eos.hms.analysis.AppPushAnalysis.exec(AppPushAnalysis.java:47)
at com.eos.hms.task.manual.BigDataCmdTask.start(BigDataCmdTask.java:81)
at com.eos.hms.modules.job.TaskStatusCmdJob.innerExecute(TaskStatusCmdJob.java:27)
at com.eos.hms.job.CommonStatusJob.execute(CommonStatusJob.java:41)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
①一开始,我怀疑是dbSearch方法是不是写的有问题, 但是通过测试之前写过的类似的例子,排除了这个疑点,后来我就将两个代码进行比较,发现是hiveDbop对象的问题.
如果hiveDbop是局部对象,HiveDbop hiveDbop = DbopManager.loadHiveDbop(DbopManager.hiveDB); 则没有问题. 但如果是全局变量, 则会出现上述的空指针异常.
②后来,我就查看mysql数据库连接对象是否也会出现这种问题, 最后是多虑的, mysql数据库连接对象是支持全局变量的.
③最后,我只能暂时的认为,hive数据库连接对象最好是局部变量,至于原因,我就不知道了,先记于此.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值