lea*_*ner 6 apache-spark apache-spark-sql azure-data-lake azure-databricks azure-data-lake-gen2
我正在将事实表和维度表从 SQL Server 导入到 Azure Data Lake Gen 2。
如果我要整理表格以创建对在 Azure Databricks 上运行 ML 模型有用的数据集,我应该将数据保存为“Parquet”还是“Delta”?
存储为 parquet 和 delta 有什么区别?
Delta 将数据存储为镶木地板,只是在其上增加了一层具有高级功能的附加层,提供事件历史记录(事务日志)以及更灵活地更改内容,例如更新、删除和合并功能。这个链接增量很好地解释了文件的组织方式。
一个缺点是它可能会在大量更新时变得非常碎片化,这可能对性能有害。由于 AZ Data Lake Store Gen2 无论如何都没有针对大型 IO 进行优化,这并不是一个大问题。虽然对镶木地板格式进行了一些优化,但这种方式不会很有效。
我会使用 delta,只是为了高级功能。如果存在数据随时间更新而不仅仅是追加的场景,这将非常方便。特别好的功能,您可以在它们存在的给定时间点读取增量表。
这对于拥有一致的训练集非常有用(始终拥有相同的训练数据集,而无需分离到单独的镶木地板文件)。如果 ML 模型将 delta 格式作为输入处理可能会出现问题,因为可能只有少数框架能够直接读取它,因此您需要在某些预处理步骤中对其进行转换。
小智 6
Delta Lake 使用版本化的 Parquet 文件将数据存储在云存储中。除了版本之外,Delta Lake 还存储事务日志来跟踪对表或 blob 存储目录进行的所有提交,以提供 ACID 事务。
参考: https: //learn.microsoft.com/en-us/azure/databricks/delta/delta-faq
根据其他答案,Delta Lake 是 Parquet 之上的一个功能层。
考虑一下 - 您需要 Delta 功能吗?如果你只是阅读数据并在其他地方争论,达美航空只是额外的复杂性而没有什么额外的好处。
此外,Parquet 与几乎所有数据系统兼容,Delta 被广泛采用,但并非所有系统都可以与 Delta 兼容。
归档时间: |
|
查看次数: |
6388 次 |
最近记录: |