为生产工作负载配置自动加载程序
砖建议你遵循流的最佳实践在生产中运行自动加载程序。
砖推荐使用自动加载器在三角洲住表增量数据的摄入。三角洲住在Apache火花结构化流表扩展功能,允许您编写几行Python或SQL声明式部署生产数据管道:
监控自动加载程序
查询文件自动加载程序发现的
请注意
的cloud_files_state
函数是在砖运行时可用10.5及以上。
自动加载器提供了一个SQL API检查的状态流。使用cloud_files_state
功能,你可以找到关于文件的元数据,发现了一个汽车加载程序流。简单查询从cloud_files_state
,提供与汽车相关的检查点位置加载程序流。
选择*从cloud_files_state(“路径/ /检查站”);
听流更新
进一步监测自动加载程序流,砖建议使用Apache的火花流媒体查询侦听器接口。
自动加载程序报告指标每批流查询侦听器。您可以查看有多少文件积压,积压在多大numFilesOutstanding
和numBytesOutstanding
以下指标原始数据流查询进展仪表板选项卡:
{“源”:({“描述”:“CloudFilesSource /道路/ /源”,“指标”:{“numFilesOutstanding”:“238”,“numBytesOutstanding”:“163939124006”}}]}
在砖运行时的10.1和以后,使用文件通知模式时,近似数的指标还包括文件在云中事件队列approximateQueueSize
AWS和Azure。
成本的考虑
运行时自动加载程序,你的成本会的主要来源的成本计算资源和文件的发现。
降低计算成本,砖推荐使用砖的工作安排汽车装载机使用批处理作业Trigger.AvailableNow
而不是运行不断,只要你没有低延迟的要求。看到配置结构化流触发间隔。
文件发现成本可以操作列表的形式存储账户目录清单模式和API请求订阅服务,文件通知和队列服务模式。减少文件发现成本,砖建议:
使用触发器。AvailableNow和rate limiting
请注意
仅在砖Scala 10.1运行时的可用。
在砖运行时为Python和Scala 10.2及以上。
自动加载器可以在砖调度运行工作作为批处理作业使用Trigger.AvailableNow
。的AvailableNow
触发将指导汽车加载程序来处理所有的文件到达之前查询开始时间。新文件上传后流已经开始将被忽略,直到下一个触发器。
与Trigger.AvailableNow
会发生,文件发现异步处理与数据处理和数据跨多个micro-batches率限制。自动加载程序默认流程每micro-batch最多1000个文件。您可以配置cloudFiles.maxFilesPerTrigger
和cloudFiles.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
因此,如果你想摄取旧数据不应该当你开始流中设置该选项。