平面文件(orc,csv)比火花中的增量表更有效吗

Posted

技术标签:

【中文标题】平面文件(orc,csv)比火花中的增量表更有效吗【英文标题】:Are flatfiles(orc,csv) more efficient than delta table in spark 【发布时间】:2019-12-17 16:34:03 【问题描述】:

我正在处理大约 16 个增量表,数据块中有大约 1 到 300 万行。 因此,当我尝试执行诸如加入之类的操作,然后在这些增量表中删除或插入时,需要很长时间。 我要做的主要是插入和删除操作。 所以我应该使用平面文件而不是增量表。 或者我应该尝试与插入的增量表合并。

因此我怀疑 delta 的优点是什么,为什么不使用平面文件?

这是一个基本问题,但我对数据块还是新手,所以任何帮助都会很好。

【问题讨论】:

【参考方案1】:

Andy,这完全取决于您的需求和期望,但增量表有助于解决许多数据工程挑战。

增量表的行为类似于事务日志,对于时间旅行等许多场景非常有用。这使得能够回滚重现一些实验(读取旧版本的数据)、允许分析数据版本之间的差异(更改)。

同样在处理 parquet 时,我们不必重写整个数据集,我们只需写入更新后的数据

如果您不需要任何这些,那么也许您可以忘记增量表并专注于纯粹的性能。

【讨论】:

所以如果我不需要这些。平面文件会提供更好的性能吗?因为我认为我不需要旧版本的数据。我的代码花费的时间主要是在插入上。感谢您的回复。 安迪,增量表只是镶木地板文件上的额外元数据。首先,您应该尝试处理“简单”的镶木地板。根据您的需要,您还可以尝试 Hive ACID 事务(通过 ORC)。就个人而言,我绝不会建议您将平面文件作为主要选择。

以上是关于平面文件(orc,csv)比火花中的增量表更有效吗的主要内容,如果未能解决你的问题,请参考以下文章

火花小兽人条纹

火花检查点比缓存更快吗?

Databricks - 从增量表写入流到 orc 文件的读取流仅具有更改

parquet和orc

如何将火花数据输出到具有单独列的 csv 文件?

转换CSV到ORC文件格式