Корпорация Майкрософт предлагает замечательное эталонное решение для архитектуры , которое также может помочь вам получить больше информации
Я не уверен, что использование REST API - лучший способ для go получить выходные данные своей работы из Azure DataBricks.
Прежде всего REST API имеет ограничение скорости на экземпляр блока данных. Это не так уж плохо при 30 запросах в секунду, но это сильно зависит от масштаба вашего приложения и других применений экземпляра блока данных, если этого достаточно. Этого должно быть достаточно для создания задания, но если вы хотите опросить статус задания для завершения, этого может быть недостаточно.
Существует также ограниченная пропускная способность при передаче данных через REST API. Например: в соответствии с документами выходной API будет возвращать только первые 5 МБ выходных данных прогона. Если вам нужны более крупные результаты, вам придется хранить их где-то еще, прежде чем получать их из приложения C#.
Альтернативный метод поиска
Короче говоря: Использовать Azure PaaS в ваших интересах с blobstorage и eventgrid.
Это ни в коем случае не исчерпывающее решение, и я уверен, что кто-то может придумать лучшее, но это сработало для меня в подобных случаях.
Что вы можете сделать, это записать результат своих заданий в какое-либо облачное хранилище, подключенное к блокам данных, а затем получить результат из этого хранилища позже. В этом уроке есть шаг , который демонстрирует базовую концепцию c для хранения результатов работы с SQL хранилищем данных , но вы можете использовать любое хранилище, которое вам нравится, например, хранилище BLOB-объектов
Допустим, вы сохраняете результат в хранилище BLOB-объектов. Каждый раз, когда новый вывод задания записывается в BLOB-объект, вы можете инициировать событие. Вы можете подписаться на эти события через Azure Eventgrid и использовать их в своем приложении. Существует. net SDK , который позволит вам сделать это. Событие будет содержать BLOB-объект URI, который можно использовать для передачи данных в ваше приложение.
Форма docs Событие blobcreated будет выглядеть примерно так:
[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account",
"subject": "/blobServices/default/containers/test-container/blobs/new-file.txt",
"eventType": "Microsoft.Storage.BlobCreated",
"eventTime": "2017-06-26T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"api": "PutBlockList",
"clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId": "831e1650-001e-001b-66ab-eeb76e000000",
"eTag": "\"0x8D4BCC2E4835CD0\"",
"contentType": "text/plain",
"contentLength": 524288,
"blobType": "BlockBlob",
"url": "https://my-storage-account.blob.core.windows.net/testcontainer/new-file.txt",
"sequencer": "00000000000004420000000000028963",
"storageDiagnostics": {
"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]
Будет важно назвать ваши двоичные объекты с необходимой информацией, такой как идентификатор задания и идентификатор запуска. Вы также можете создавать собственные события, что увеличит сложность решения, но позволит вам добавить больше деталей к вашему событию.
Как только вы получите в своем приложении данные blob , созданные в вашем приложении. вы можете использовать SDK хранилища, чтобы получить blobdata для использования в вашем приложении. В зависимости от логики вашего приложения c вам также придется управлять идентификатором задания и запускать идентификаторы в приложении, в противном случае вы рискуете получить выходные данные задания в своем хранилище, которые больше не подключены к процессу в вашем приложении.