Databricks Spark.readstream 格式差异

问题描述 投票:0回答:2

我对 Databricks 中以下代码的差异感到困惑

spark.readStream.format('json')

spark.readStream.format('cloudfiles').option('cloudFiles.format', 'json')

我知道 cloudfiles 的格式将被视为 Databricks Autoloader 。性能/功能比较,哪一个更好?有人有这方面的经验吗

谢谢

apache-spark databricks spark-structured-streaming databricks-autoloader
2个回答
6
投票

两者之间存在多种差异。当您使用 Auto Loader 时,您至少会得到更多的东西(请参阅 doc 了解所有详细信息):

  • 发现新文件时具有更好的性能、可扩展性和成本效率。您可以使用文件通知模式(当您使用云原生集成收到有关新文件的通知时)或使用本机云 API 列出文件和目录的优化文件列表模式。 Spark 的文件流依赖于速度慢得多的 Hadoop API,尤其是当您有大量嵌套目录和大量文件时
  • 支持模式推理和演化。 使用 Auto Loader,您可以检测 JSON/CSV/Avro 架构中的更改,并调整它以处理新字段。

0
投票

根据我的经验,对于预定的批处理作业,我发现 Spark Streaming 平均快约 60%。 您可以使用自动加载器进行基于事件的实时更新,因为在事件之间它不会使用计算(即您不需要连续轮询事件源)

批处理作业的参考数据:

Spark read/writestream - 8412 rows in 1min 52 secs
Autoloaded - 8412 records in 5 min 30 seconds
© www.soinside.com 2019 - 2024. All rights reserved.