为生产工作负载配置自动加载程序

砖建议你遵循流的最佳实践在生产中运行自动加载程序。

砖推荐使用自动加载器在三角洲住表增量数据的摄入。三角洲住在Apache火花结构化流表扩展功能,允许您编写几行Python或SQL声明式部署生产数据管道:

监控自动加载程序

查询文件自动加载程序发现的

请注意

cloud_files_state函数是在砖运行时可用10.5及以上。

自动加载器提供了一个SQL API检查的状态流。使用cloud_files_state功能,你可以找到关于文件的元数据,发现了一个汽车加载程序流。简单查询从cloud_files_state,提供与汽车相关的检查点位置加载程序流。

选择*cloud_files_state(“路径/ /检查站”);

听流更新

进一步监测自动加载程序流,砖建议使用Apache的火花流媒体查询侦听器接口

自动加载程序报告指标每批流查询侦听器。您可以查看有多少文件积压,积压在多大numFilesOutstandingnumBytesOutstanding以下指标原始数据流查询进展仪表板选项卡:

{“源”:({“描述”:“CloudFilesSource /道路/ /源”,“指标”:{“numFilesOutstanding”:“238”,“numBytesOutstanding”:“163939124006”}}]}

在砖运行时的10.1和以后,使用文件通知模式时,近似数的指标还包括文件在云中事件队列approximateQueueSizeAWS和Azure。

成本的考虑

运行时自动加载程序,你的成本会的主要来源的成本计算资源和文件的发现。

降低计算成本,砖推荐使用砖的工作安排汽车装载机使用批处理作业Trigger.AvailableNow而不是运行不断,只要你没有低延迟的要求。看到配置结构化流触发间隔

文件发现成本可以操作列表的形式存储账户目录清单模式和API请求订阅服务,文件通知和队列服务模式。减少文件发现成本,砖建议:

  • 提供一个ProcessingTime引发运行时自动加载程序不断在目录清单模式下

  • 架构文件上传在词法顺序利用存储账户增量清单在可能的情况下

  • 使用砖在目录清单模式下运行时9.0或更高版本,尤其是深层嵌套的目录

  • 利用文件通知当增量清单是不可能的

  • 使用资源标签标签资源由自动加载程序来跟踪你的成本

使用触发器。AvailableNow和rate limiting

请注意

仅在砖Scala 10.1运行时的可用。

在砖运行时为Python和Scala 10.2及以上。

自动加载器可以在砖调度运行工作作为批处理作业使用Trigger.AvailableNow。的AvailableNow触发将指导汽车加载程序来处理所有的文件到达之前查询开始时间。新文件上传后流已经开始将被忽略,直到下一个触发器。

Trigger.AvailableNow会发生,文件发现异步处理与数据处理和数据跨多个micro-batches率限制。自动加载程序默认流程每micro-batch最多1000个文件。您可以配置cloudFiles.maxFilesPerTriggercloudFiles.maxBytesPerTrigger配置文件或多少多少字节micro-batch应该处理。该文件限制是一个硬限制但字节限制是一个软限制,这意味着比提供的字节可以处理maxBytesPerTrigger。当提供的选项都是在一起时,自动加载程序将处理很多文件需要达到一个极限。

事件保留

请注意

在砖运行时8.4及以上。

自动加载程序跟踪发现文件检查点位置使用RocksDB提供只有一次摄入担保。高容量的数据集,您可以使用cloudFiles.maxFileAge期权到期事件从检查点位置降低存储成本和汽车加载程序启动时间。你可以设置的最小值cloudFiles.maxFileAge“14天”。删除在墓碑RocksDB出现条目,因此你应该期待增加临时事件的存储使用到期之前开始平整。

警告

cloudFiles.maxFileAge提供高容量的数据集作为成本控制机制,摄取的顺序每小时数以百万计的文件。调优cloudFiles.maxFileAge错误可能导致数据质量问题。因此,砖不建议调整该参数,除非绝对必需。

尝试调整cloudFiles.maxFileAge选项可能导致未加工的文件被自动忽略装载机到期或已经处理过的文件,然后再加工造成重复数据。这里有一些在选择时要考虑的因素cloudFiles.maxFileAge:

  • 如果你流重启后很长一段时间,文件通知事件,从队列中被超过cloudFiles.maxFileAge将被忽略。同样的,如果你使用目录清单,文件可能出现在以上的停机时间cloudFiles.maxFileAge将被忽略。

  • 如果你使用目录清单模式和使用cloudFiles.maxFileAge,例如设置为“1月”,你停止流并重新启动流cloudFiles.maxFileAge设置为“2个月”超过1个月,所有文件,但是最近2个月再加工。

最好的方法来调优cloudFiles.maxFileAge就是从一个慷慨的过期,例如,“1年”和工作向下之类的“9个月”。如果您设置这个选项你第一次开始流,你不会比摄取数据cloudFiles.maxFileAge因此,如果你想摄取旧数据不应该当你开始流中设置该选项。