我遇到的问题是,我看到以下错误消息-基本上围绕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
时如何准确查看收到的数据?
否则,基于该错误消息,我实际上在正确的轨道上吗?
任何帮助/想法都将不胜感激。
谢谢。
答案 0 :(得分:1)
当您尝试从myData
中提取results
时出现错误,正如您从其文本中看到的那样。我想您在架构中有一个错误。要了解为什么在调用show
时出现错误,我们需要查看Spark中的转换操作二分法。
您使用Spark所做的工作可以分为转换和动作。基本上,操作就是使您可以查看所做的实际结果的事情,例如show
,保存到磁盘并收集到驱动程序。
转换是其他所有内容,尤其是select
语句。在处理完一个动作之前,转换只会堆积起来,这只会在调用show
时引发错误,尽管它可能是由较早的转换引起的。
顺便说一句,您无需打印show
的结果,即None
。