Spark Jdbc报NullPointerException

博客内容讲述了在使用Spark JDBC从PostgreSQL读取数据时遇到NullPointerException的问题,原因是配置项中存在null值。解决方案是避免为option设置null值,特别是在`query`和`dbtable`选项中,这两个选项不能同时为null。通过条件判断确保只有非空的配置项被传递,从而避免了程序异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

运行使用Spark Jdbc读取postgresql程序报错:

Exception in thread "main" java.lang.NullPointerException

at java.util.Hashtable.put(Hashtable.java:460)

at java.util.Properties.setProperty(Properties.java:166)

at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$asProperties$(JDBCOPtions.scala:51)

...

at scala.Option.getOrElse(Option.scala:189)

at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:307)

...

代码:

spark.read()

.format("jdbc")

.option("url", url)

.option("query", query)

.option("dbtable", dbtable)

...

.load();//报错定位到这行代码

解决方法:

不要个option设置null值,如:

reader = spark.read()

.format("jdbc")

.option("url", url);

if(query != null) {

        reader.option("query", query)

}

if(dbtable != null) {

        reader.option("dbtable", dbtable)

}

...

reader.load();

因为JDBC query和dbtable配置项不能同时指定,有一个值设置为了null.使用option设置null值就报错了.错误代码定位在了reader.load()方法,错误不好排查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderFusionZhu

不要打赏太多哦!我喝速溶就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值