Spark-如何识别和删除空行

时间:2019-06-21 08:34:23

标签: python apache-spark pyspark

我遇到的问题是,我看到以下错误消息-基本上围绕null

An error occurred while calling o4013.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 275.0 failed 4 times, most recent failure: Lost task 0.3 in stage 275.0 (TID 415, w-----pp.net, executor 1): scala.MatchError: null (of class org.json.JSONObject$Null)

所以我要做的是首先从数据库中收集数据-它是一个对象,因此需要长期选择:

myData = results.select("music.metadata.artist.*")

然后:

print(myData.select("*").show())

基于该错误,我假设有一些null数据进入,因此要删除它,我尝试在进行show()之前放置以下行

myData.na.drop()

但是那无济于事,我继续遇到相同的错误。

除此之外,设置myData时如何准确查看收到的数据?

否则,基于该错误消息,我实际上在正确的轨道上吗?

任何帮助/想法都将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

当您尝试从myData中提取results时出现错误,正如您从其文本中看到的那样。我想您在架构中有一个错误。要了解为什么在调用show时出现错误,我们需要查看Spark中的转换操作二分法。

您使用Spark所做的工作可以分为转换和动作。基本上,操作就是使您可以查看所做的实际结果的事情,例如show,保存到磁盘并收集到驱动程序。

转换是其他所有内容,尤其是select语句。在处理完一个动作之前,转换只会堆积起来,这只会在调用show时引发错误,尽管它可能是由较早的转换引起的。

顺便说一句,您无需打印show的结果,即None