在 Azure Databricks 中编写 spark 数据框
Posted
技术标签:
【中文标题】在 Azure Databricks 中编写 spark 数据框【英文标题】:Writing spark dataframe in Azure Databricks 【发布时间】:2020-11-09 15:45:46 【问题描述】:我是 Azure Databricks 的新手。我有两个输入文件和 python AI 模型,我正在清理输入文件并在输入文件上应用 AI 模型以获得最终概率。读取文件、加载模型、清理数据、预处理数据并以概率显示输出只需要我几分钟。
但是,当我尝试将结果写入表格或镶木地板文件时,我需要花费 4-5 多个小时。我尝试了各种 repartition/partitionBy/saveAsTable 方法,但都不够快。
我的输出 spark 数据框由 120000000 行的三列组成。我的共享集群大小是 9 节点集群,每个节点有 56GB 内存。
我的疑问是:- 1.) 具有慢速写入能力的天蓝色数据块中的预期行为。 2.) 我们不能在 azure databricks 中调整 spark 配置是真的吗,azure databricks 会使用可用内存自行调整。
【问题讨论】:
【参考方案1】:性能取决于多种因素:为了进一步调查,您能否分享以下详细信息:
数据的大小是多少?
worker 类型的大小是多少?
分享你正在运行的代码?
我建议您阅读以下文章,这有助于提高性能:
Optimize performance with caching 7 Tips to Debug Apache Spark Code Faster with Databricks Azure Databricks Performance Notes【讨论】:
如果我的回答对你有用,可以accept it as an answer吗?它可能会帮助更多有类似问题的人。 @samrat1,我在 SO 上支持了你的问题,你有足够的分数来接受答案。请接受它作为答案。 - 谢谢 我现在已经接受了答案,谢谢【参考方案2】:-
我使用过 azure databricks 并将数据写入 azure 存储,速度很快。
此外,databricks 也像在 Aws 中一样托管在 Azure 上。因此可以设置 spark 的所有配置。
正如 pradeep 所问,数据大小和分区数是多少?您可以使用 df.rdd.getNumPartitions() 获取它。 你在写之前尝试过重新分区吗?谢谢。
【讨论】:
您好 Sriram,感谢您提供的信息。现在问题已通过 CHEEKATLAPRADEEP-MSFT 信息解决以上是关于在 Azure Databricks 中编写 spark 数据框的主要内容,如果未能解决你的问题,请参考以下文章
从 Azure Databricks 将数据写入 Azure Blob 存储
如何强制 Azure 数据工厂数据流使用 Databricks
如何在 Azure Databricks 中保存自定义 python 类对象?
将 Azure Databricks 增量表迁移到 Azure Synapse SQL 池