从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为啥需要将 parquet.writeLegacyFormat 设置为 True?

Posted

技术标签:

【中文标题】从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为啥需要将 parquet.writeLegacyFormat 设置为 True?【英文标题】:From Databricks to Azure Synapse Analytics: when we load a dataframe into table, why do we need to set parquet.writeLegacyFormat as True?从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为什么需要将 parquet.writeLegacyFormat 设置为 True? 【发布时间】:2020-10-30 04:58:58 【问题描述】:

我需要将在 Databricks 中创建的数据帧加载到 Azure Synapse。现在,Microsoft's example 需要为 Parquet 设置 Spark 配置,如下所示:

spark.conf.set(
"spark.sql.parquet.writeLegacyFormat",
"true")

为什么它需要是旧格式(即 Spark 1.4

*在 Databricks 中,默认为 False。

上面的语句是每个会话的,所以它不会影响其他正在运行的作业,但是我想知道为什么我们需要使用旧格式?

我们是否有替代方法,例如存储为 Parquet 文件(为 False),然后使用 Polybase 查询 ADLSg2?

提前感谢您的反馈/建议。

from Spark 3.0.0>

如果为 true,数据将以 Spark 1.4 及更早版本的方式写入。例如,十进制值将以 Apache Parquet 的固定长度字节数组格式写入,Apache Hive 和 Apache Impala 等其他系统使用该格式。如果为 false,将使用 Parquet 中较新的格式。例如,小数将以基于 int 的格式写入。如果 Parquet 输出旨在用于不支持这种新格式的系统,请设置为 true。

【问题讨论】:

【参考方案1】:

Parquet 附加了旧模型。 ADF 和 Synapse 支持按照 https://docs.microsoft.com/en-us/azure/data-factory/supported-file-formats-and-compression-codecs-legacy 的旧 Parquet 格式,以实现向后兼容性。

谢谢

喜满洲

【讨论】:

我很抱歉迟到了,感谢您的评论。如果仍然如此,我将使用最新的 Synapse Studio 进行测试。我想将它与最新格式 + Delta Lake 一起使用。我将在 8 月探索它。

以上是关于从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为啥需要将 parquet.writeLegacyFormat 设置为 True?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Databricks 将文件从 Azure 文件移动到 ADLS Gen 2 并返回

将数据表从 Databricks dbfs 导出到 azure sql 数据库

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

将数据从 Databricks 加载到 Azure SQL 时的性能问题

从 Azure Databricks 将数据写入 Azure Blob 存储

从 Azure Databricks Notebook 访问 SQL Server