我正在处理大约60亿条记录的大数据集,我已经成功执行了所有计算/运算。最后,当我要使用以下命令将数据存储到databricks(DBFS)数据库时,它花费的时间更长(超过25-30小时),即使它也没有完成。有人可以给我一些处理海量数据的好方法。
df_matches_ml_target.write.mode("overwrite").saveAsTable("Demand_Supply_Match_ML")
如果您需要更多信息,请告诉我。
答案 0 :(得分:1)
到目前为止,就像Bi Rico指出的那样,到目前为止,您一直在对数据集执行“惰性”操作。这是惰性执行含义的detailed summary。
本质上,您对数据集所做的任何转换(例如地图,flatMap,过滤器等)都不会执行,直到调用 action 为止。动作执行需要使用结果的操作,一些示例正在写入文件(saveAsTable),count(),take()等。
由于您有60亿条未知大小的记录,因此听起来您的数据集相当大,这可能是花很长时间执行操作的重要因素。
在将Spark与大数据结合使用时,通常建议对较小的数据子集进行处理。这使您可以检查转换和代码的有效性,并在合理的时间内获得结果。然后,您可以将您的工作应用于整个数据集。
2018年9月21日编辑:建议加快处理时间
没有更多信息很难说,但是这里有一些一般性提示。