Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala UDF函数引发空指针异常_Scala_Apache Spark - Fatal编程技术网

Scala UDF函数引发空指针异常

Scala UDF函数引发空指针异常,scala,apache-spark,Scala,Apache Spark,我有以下方法: class LoadService(configs: Configs, siteDataFrame:DataFrame) extends Serializable{ var serviceConfig =configs.getServiceConfig def insertIntoCassandra(siteMetaData: MetaData, dataFrame: DataFrame): Unit ={ var query = ca

我有以下方法:

 class LoadService(configs: Configs, siteDataFrame:DataFrame) extends Serializable{
var serviceConfig =configs.getServiceConfig
         def insertIntoCassandra(siteMetaData: MetaData, dataFrame: DataFrame): Unit ={
            var query = cassandraUtil.buildInsertQuery(activeReplicaKeySpace, tableName, columns, sparkTempTable)
            cassandraSQLContext.sql(query)
            logger.info("Query executed")
          }
         def getSiteId: Int = {
            System.out.println("test: " + serviceConfig.getAdminKeyspace)
            return serviceConfig.getSiteId.toInt
          }
          cassandraSQLContext.udf.register("getSiteId", getSiteId _)
    }
所以另一个类调用insertIntoCassandra,然后var query具有getSiteId()。因此它会触发getSiteId UDF函数,但由于某些原因,UDF函数始终存在空指针异常。如果我将serviceConfig.getSiteId.toInt放在insertIntoCassandra函数中,该函数可以访问serviceConfig,但由于某种原因,我使用的所有UDF函数似乎都会抛出null指针异常

serviceConfig定义为类中的变量。
无论何时调用此函数,它都会在serviceConfig.getAdminKeySpace处引发空指针异常。似乎serviceConfig为空。但是,如果我将相同的语句放在类中UDF函数之外的任何其他地方,它似乎都能工作。在这个类被实例化之后,UDF函数也被调用。UDF函数是否无权访问serviceConfig或其他内容?包含此方法的类扩展了Serializable,因此我不确定这是否会产生影响。

实际上,问题在于以下语句:

var serviceConfig =configs.getServiceConfig

Configs是另一个具有Configuration java对象的java类,配置不可序列化,因此无法与spark一起使用,因为spark需要可序列化性。

您能否告诉我们如何定义变量
serviceConfig
?这似乎是一个范围问题。你能发布更多的代码吗?