在 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 池

从 Azure Databricks 笔记本登录到 Azure ML 工作区

Databricks:未找到 Azure 队列存储结构化流式传输密钥错误