作者:宝贝不哭522502903183 | 来源:互联网 | 2022-10-23 15:41
一旦将新文件添加到第1代Azure数据湖中后,我想向外部NIFI流发送事件或通知。
有人工作过,或者有关于此用例的任何信息吗?
1> Adam Marczak..:
嘿,这是一个很好的问题,不幸的是,目前还没有可以挂起的现成事件,但是我找到了一种使用诊断日志的方法。
所以想法很简单
在ADLSv1上设置诊断日志以将日志流式传输到事件中心
触发逻辑应用程序,用于事件中心上的新事件
因此要在ADLSv1上设置诊断日志
转到ADLSv1上的诊断设置
添加诊断设置
设置到您的活动中心的链接
现在设置逻辑应用
开放逻辑应用设计器
添加事件中心触发器(假定存在名为stackdemohub的中心)
添加过滤器数组动作
3.1。设置从到表达式
triggerBody()?['ContentData']['records']
3.2。将右侧条件设置为“创建”,并将左侧条件字段设置为expression
item()['operationName']
添加for-each循环并通过过滤器数组步骤传递主体
保存并运行
5.1。您将看到逻辑应用成功执行时
您会在列表中找到新文件
如您所见,在演示文件夹中,我上传的文件之一称为MarketplaceCharges.json。
每个事件看起来像这样
{
"time": "2019-09-18T07:48:20.342Z",
"resourceId": "/SUBSCRIPTIONS/2BCB9F3D-3F6B-4345-A49E-86D3141C7F73/RESOURCEGROUPS/STACKDEMO/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/STACKDEMO",
"category": "Requests",
"operationName": "create",
"resultType": "201",
"callerIpAddress": "::ffff:111.222.333.444",
"correlationId": "93faafd5-dfa2-4432-91f8-c7f360d80655",
"identity": "adam@marczak.io",
"properties": {
"HttpMethod": "PUT",
"Path": "/webhdfs/v1/demo/MarketplaceCharges.json",
"RequestContentLength": 0,
"ClientRequestId": "288c654f-0948-4468-8e92-b158cc265c54",
"StartTime": "2019-09-18T07:48:20.264Z",
"EndTime": "2019-09-18T07:48:20.334Z",
"UserId": "8162E212-E32B-443C-8F13-1CDA7B264DDB"
}
}
并且您通过文件路径/webhdfs/v1/demo/MarketplaceCharges.json获得了价值
我在ADLSv1上创建了3个文件,并按预期在循环中获得了3个项目
现在,您可以使用此事件信息执行任何操作,并在需要时将其发送。
最后,您可能需要将逻辑应用程序更改为功能应用程序,以防止大量请求,因为逻辑应用程序在规模上并不便宜
triggerBody()?['ContentData']['records']
还有一个重要的注意事项,对于较大的文件,请确保添加一些延迟,因为创建的请求类型是文件出现在存储中时,即使文件仍在复制中。在这种情况下,还会发生进一步的“附加”事件。