【发布时间】:2018-04-05 23:10:13
【问题描述】:
我期待构建一个能够接收 JSON 对象并将其保存到 ADLS 的端点。到目前为止,我已经使用函数、事件中心和流分析尝试了几种不同的组合。问题是:到目前为止,似乎没有任何解决方案是理想的。
TL;DR 在我的场景中,我有几组用户将通过 API 向我发送 JSON 数据,我需要将其保存在 ADLS 中,按用户分隔。这样做的最佳方式是什么?
谁能给我一些启示?提前致谢。
警告:前面有长文本
让我解释一下我目前的发现:
函数
优势
- 单一解决方案方法 - 使用单一服务解决方案
- 内置授权
- 组织 - 将用户的文件保存到 ADLS 内的单独文件夹中
- HTTP 端点 - 发送数据只需要一个 POST
- 便宜且随用随付 - 按请求收费
缺点
- 绑定和依赖项 - 函数没有 ADLS 绑定。要授权和使用 ADLS,我需要安装额外的依赖项并手动管理其凭据。我只能用 C# 做到这一点,但还没有用其他语言测试过。也可能是一个缺点,虽然我无法确认。
- 文件管理 - ADLS 不建议每个请求保存 1 个文件。另一种方法是附加到文件并管理其大小。与其他解决方案相比,这意味着更多的代码。
活动中心
优势
- 根本不需要代码 - 我只需要启用数据捕获
缺点
- 每个用户一个事件中心 - 通过事件中心的捕获功能在 ADLS 中分离数据的唯一方法是每个用户使用一个事件中心
- 价格 - 为每位用户捕获一个事件中心会大幅提高价格
- 授权 - 发送事件不像 POST 那样简单
函数 + 事件中心
将事件中心与函数结合使用可减轻函数的缺点,但具有与事件中心相同的缺点(身份验证除外)
函数 + 事件中心 + 流分析
虽然我可以在没有捕获的情况下拥有一个事件中心,但使用流分析 SQL 作为过滤器将每个用户的数据定向到其特定文件夹,这将是一个限制因素。我试过了,随着 SQL 变大,它会变慢。
物联网中心
IoT Hub 有路由,但它不像我需要的那样动态。
谁能给我一些启示?提前致谢。
【问题讨论】:
-
感谢您记录每种方法的优缺点。您是否考虑过构建 .Net Web API?这将是最常见的解决方案。
-
为什么需要将其存储在 ADLS 中?如果它仅用于查询目的,那么 Blob 存储将执行,因为您可以使用 u-sql 直接查询它。在那种情况下,我会说去一个天蓝色的功能
-
@Nick.McDermaid 绝对是。我考虑过使用 Functions,因为它具有极强的可扩展性且价格低廉。我非常倾向于使用自定义构建的 .net API。现在这是我接收数据的方式,尽管它直接发送到 SQL Server。感谢您的回复!
-
@PeterBons 如果与 ADLA 一起使用,我认为 ADLS 比 Blob 存储更适合?我无法确认,但这对我来说很有意义。也许我错了。
-
根据我的经验,在 blob 存储数据上运行 u-sql 作业在这里可以正常工作。原生支持,见msdn.microsoft.com/en-us/azure/data-lake-analytics/u-sql/…
标签: azure azure-data-lake azure-iot-hub azure-eventhub