【发布时间】:2018-09-19 10:34:42
【问题描述】:
我正在处理大约有 60 亿条记录的大数据集,我已经成功地执行了所有计算/操作。最后,当我要使用以下命令将数据存储到 databricks(DBFS)数据库时,它需要更长的时间(超过 25-30 小时),即使它也没有完成。谁能给我一些处理如此庞大数据的好方法。
df_matches_ml_target.write.mode("overwrite").saveAsTable("Demand_Supply_Match_ML")
如果您需要这方面的更多信息,请告诉我。
【问题讨论】:
-
“我已成功执行所有计算/操作”是什么意思?我问是因为数据框是惰性的,它们实际上不会计算任何东西,直到您执行操作,例如写入表。您的操作很可能是花费大部分时间的事情。
-
这意味着,代码/程序级别的一切都已完成。一旦我执行了 count() 和其他与数据相关的操作。我开始收到这些错误。
-
count和saveAsTable都是执行您在代码中构建的查询计划的操作。 Spark 有一个构建计划、执行计划模型,类似于某些编程语言的编译代码、运行代码模型。直到您执行操作(例如计数或保存)的所有代码部分都在构建计划,在您执行操作之前,该计划不会真正运行。看来您的计划构建良好,但运行时遇到问题(速度慢,是否抛出错误?)。您的计划运行时出现问题的原因有很多,我们需要查看代码以提供帮助。
标签: apache-spark machine-learning pyspark pyspark-sql databricks