在foreach迭代器内部筛选Spark数据帧时发生Spark java.lang.NullPointerException错误

在foreach迭代器内部筛选Spark数据帧时发生Spark java.lang.NullPointerException错误,java,scala,apache-spark,Java,Scala,Apache Spark,我有两个spark dfs,我想对一个df执行foreach迭代器,并从下一个df获取特定的someId相关记录 每次发生java.lang.NullPointerException时我都这样做 我已经在foreach循环中发布了带有注释的代码。我尝试了三种方法来实现这一点,但每次都出现相同的错误 请帮我解决这个问题 val schListDf = spark.read.format("csv") .option("header", "true") .load("/home/user/proje

我有两个spark dfs,我想对一个df执行foreach迭代器,并从下一个df获取特定的someId相关记录

每次发生java.lang.NullPointerException时我都这样做

我已经在foreach循环中发布了带有注释的代码。我尝试了三种方法来实现这一点,但每次都出现相同的错误

请帮我解决这个问题

val schListDf = spark.read.format("csv")
.option("header", "true")
.load("/home/user/projects/scheduled.csv")
schListDf.createOrReplaceTempView(“计划”)

trsListDf.createOrReplaceTempView(“事务”)

val df3=spark.sql(“从事务限制5中选择*).show()

})

18/12/02 10:36:34错误执行者:第4.0阶段(TID 4)任务0.0中出现异常 java.lang.NullPointerException 位于org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:142) 位于org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:140) 位于org.apache.spark.sql.SparkSession.sql(SparkSession.scala:641) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:52) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:48) 位于scala.collection.Iterator$class.foreach(Iterator.scala:891) 位于scala.collection.AbstractIterator.foreach(迭代器.scala:1334) 位于org.apache.spark.rdd.rdd$$anonfun$foreach$1$$anonfun$apply$28.apply(rdd.scala:921) 位于org.apache.spark.rdd.rdd$$anonfun$foreach$1$$anonfun$apply$28.apply(rdd.scala:921) 位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) 位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) 位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 位于org.apache.spark.scheduler.Task.run(Task.scala:109) 位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:345) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748) 18/12/02 10:36:34错误执行者:第4.0阶段任务3.0中的异常(TID 7) java.lang.NullPointerException 位于org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:142) 位于org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:140) 位于org.apache.spark.sql.SparkSession.sql(SparkSession.scala:641) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:52) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:48) 位于scala.collection.Iterator$class.foreach(Iterator.scala:891) 位于scala.collection.AbstractIterator.foreach(迭代器.scala:1334) 位于org.apache.spark.rdd.rdd$$anonfun$foreach$1$$anonfun$apply$28.apply(rdd.scala:921) 位于org.apache.spark.rdd.rdd$$anonfun$foreach$1$$anonfun$apply$28.apply(rdd.scala:921) 位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) 位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) 位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 位于org.apache.spark.scheduler.Task.run(Task.scala:109) 位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:345) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748) 18/12/02 10:36:34错误执行者:第4.0阶段任务1.0中出现异常(TID 5)

java.lang.NullPointerException 位于org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:142) 位于org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:140) 位于org.apache.spark.sql.SparkSession.sql(SparkSession.scala:641) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:52) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:48) 位于scala.collection.Iterator$class.foreach(Iterator.scala:891) 位于scala.collection.AbstractIterator.foreach(迭代器.scala:1334) 位于org.apache.spark.rdd.rdd$$anonfun$foreach$1$$anonfun$apply$28.apply(rdd.scala:921) 位于org.apache.spark.rdd.rdd$$anonfun$foreach$1$$anonfun$apply$28.apply(rdd.scala:921) 位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) 位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2074) 位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 位于org.apache.spark.scheduler.Task.run(Task.scala:109) 位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:345) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748) 18/12/02 10:36:34错误执行者:第4.0阶段任务2.0中的异常(TID 6) java.lang.NullPointerException 位于org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:142) 位于org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:140) 位于org.apache.spark.sql.SparkSession.sql(SparkSession.scala:641) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:52) 位于controllers.FileProcess$$anonfun$hnbFile$1.apply(FileProcess.scala:48) 位于scala.collection.Iterator$class.foreach(Iterator.scala:891) 位于scala.collection.AbstractIterator.foreach(迭代器.scala:1334) 在org.apache.spark.rdd.rdd$$anonfun$foreach$1$$an
 val trsListDf = spark.read.format("csv")
.option("header", "true")
.load("/home/user/projects/transaction.csv")
//THIS WORK FINE
schListDf.foreach(row => {
if(row(2) != null){

  // I HAVE TRIED THIS WAY FIRST, BUT OCCURRED SAME ERROR
  val df = spark.sql("select * from transaction where  someid = '"+row(2)+"'")

  // I HAVE TRIED THIS WAY SECOND(WITHOUT someID filter), BUT OCCURRED SAME ERROR
  val df2 = spark.sql("select * from transaction limit 5")

  // I HAVE TRIED THIS WAY ALSO(FILTER WITH DF), BUT OCCURRED SAME ERROR
  val filteredDataListDf = trsListDf.filter($"someid" === row(2))
}