apache-spark - 从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为什么需要将 parquet.writeLegacyFormat 设置为 True?
问题描述
我需要将在 Databricks 中创建的数据帧加载到 Azure Synapse 中。现在,Microsoft 的示例需要为 Parquet 设置 Spark 配置,如下所示:
spark.conf.set(
"spark.sql.parquet.writeLegacyFormat",
"true")
为什么它需要是遗留格式(即 Spark 1.4 <)?它是强制性的吗?
*在 Databricks 中,默认值为 False。
上面的语句是每个会话的,所以它不会影响其他正在运行的作业,但是我想知道为什么我们需要使用遗留格式?
我们是否有替代方法,例如存储为 Parquet 文件(为 False),然后使用 Polybase 查询 ADLSg2?
我应该提前感谢您的反馈/建议。
如果为真,数据将以 Spark 1.4 及更早版本的方式写入。例如,十进制值将以 Apache Parquet 的固定长度字节数组格式写入,Apache Hive 和 Apache Impala 等其他系统使用该格式。如果为 false,将使用 Parquet 中较新的格式。例如,小数将以基于 int 的格式写入。如果 Parquet 输出旨在用于不支持这种较新格式的系统,请设置为 true。
解决方案
Parquet 附加了旧模型。ADF 和 Synapse 根据https://docs.microsoft.com/en-us/azure/data-factory/supported-file-formats-and-compression-codecs-legacy支持旧 Parquet 格式,以实现向后兼容性。
谢谢
喜满洲
推荐阅读
- ruby-on-rails - 使用关注点的 Rails 自定义记录器不起作用
- kubernetes - 迁移 K8S 集群
- java - 如何修复 Android Annotations 4.6.0 编译与 android Studio 3.5 和 3.5.0 gradle
- elasticsearch - ElasticSearch 可以用作 Apache Ignite 的持久存储吗?
- python - 为什么我的注册表在提交时没有更新
- javascript - 如果使用量角器在两个不同框架中的元素如何执行拖放操作
- angular - 错误代码:135,如何修复错误:找不到 update-config.json。运行“webdriver-manager update”下载二进制文件
- azure - 具有 CosmosDB 输入的时间触发功能
- c# - 如何从另一台电脑运行一台电脑的服务
- python - python中是否有一种方法来捕获图像并识别其尺寸