尝试使用 Spark IDF.fit() 时出现 NULL 指针异常

Posted

技术标签:

【中文标题】尝试使用 Spark IDF.fit() 时出现 NULL 指针异常【英文标题】:getting a NULL pointer exception when trying to use Spark IDF.fit() 【发布时间】:2015-12-22 16:03:46 【问题描述】:

尝试在 Spark 文档中运行此 example。得到下面的错误。使用 Java 版本的示例也会出现相同的错误。我得到错误的确切行是:

idfModel = idf.fit(featurizedData)


Py4JJavaError: An error occurred while calling o1142.fit.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 7 in stage 256.0 failed 1 times, most recent failure: Lost task 7.0 in stage 256.0 (TID 3308, localhost): java.lang.NullPointerException

我使用的数据是通过读取一个包含几千条记录的 Json 文件获得的。在 Java 中,我按如下方式读取文件:

DataFrame myData = sqlContext.read().json("myJsonFile.json");

其余代码与上面链接的示例完全相同。 featureizedData 是一个有效的 DataFrame,我打印了它的架构和第一个元素,一切看起来都符合预期。我不知道为什么会出现空指针异常。

【问题讨论】:

任何解决方法? 【参考方案1】:

问题是您将nan 作为某些列的文本字段。

由于问题标记为PySpark,请使用

data_nan_imputed = data.fillna("unknown", subset=["text_col1", .., "text_coln"])

如果您想将多个 text_col 组合成一个 text_col,这是一个很好的做法。否则,您也可以使用

data_nan_dropped = data.dropna()

去掉nan 列,然后拟合这个数据集。希望它会起作用。

对于scalajava,使用类似的nan 填充语句。

【讨论】:

以上是关于尝试使用 Spark IDF.fit() 时出现 NULL 指针异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 apache spark 加载模块时出现 Databricks 错误 [重复]

尝试从 Jupyter Notebook 使用 Spark 访问 Google Cloud Bigtable 时出现区域错误

尝试使用公共 IP 在 EC2 节点上启动 Spark 主服务器时出现 java.net.BindException

Apache Spark:尝试索引字符串列时出现 ***Error

尝试从 Spark 访问 S3 时出现 400 Bad Request

使用 Spark Java 在 Big Query 中写入 Date 数据类型时出现问题