【问题标题】:Custom patterns for stream analytics blob storage流分析 blob 存储的自定义模式
【发布时间】:2017-02-21 22:52:33
【问题描述】:

我的问题是关于将数据从流分析保存到 blob 存储。在我们的系统中,我们通过事件中心从许多网站收集 clictstream 数据。然后我们正在做一些小的分组和聚合。之后,我们将结果发送到我们的 Blob 存储。

问题是我们希望通过每个网站的 id 将结果分离到许多 blob 容器中。现在我们只能通过日期和时间模式来做到这一点,例如 /logs/{date}/{time} 但我们想要 /{websiteID}/{date}/{time}

有什么方法可以实现吗?

【问题讨论】:

标签: azure-blob-storage azure-stream-analytics


【解决方案1】:

这是一个重复的问题:

Stream Analytics: Dynamic output path based on message payload

Azure Stream Analytics -> how much control over path prefix do I really have?

上述内容的简短版本是您无法在流分析中执行此操作。如果多个接收器的目标路径太多而不可行,最好的办法是流式传输到单个 blob 存储接收器并使用 ASA 以外的其他东西处理结果。 Azure Functions、WebJobs 或 ADF 任务是一些可能的解决方案。

【讨论】:

    【解决方案2】:

    问题是我们希望通过每个网站的 id 将结果分离到许多 blob 容器中。现在我们只能通过日期和时间模式来做到这一点,例如 /logs/{date}/{time} 但我们想要 /{websiteID}/{date}/{time}

    正如这个官方文档stream-analytics-define-outputs提到的关于Blob存储输出的Path Prefix Pattern

    用于在指定容器中写入 blob 的文件路径。 在路径中,您可以选择使用以下 2 个变量的一个或多个实例来指定写入 blob 的频率: {日期}{时间}

    示例 1:cluster1/logs/{date}/{time}

    示例 2:cluster1/logs/{date}

    根据我的理解,您可以从单个流分析作业为您的每个网站创建多个 blob 输出目标,并使用类似 SQL 的查询语言,您可以过滤事件数据并将数据发送到特定输出。更多详情可以参考Common query patterns

    【讨论】:

    • 我怎样才能动态地做到这一点?我不想对他们每个人都这样做:select * into Output1 from Input where id=1;select * into Output2 from Input where id=2
    • 据我所知,您无法通过 Azure 流分析动态地执行此操作。为每个网站创建多个 blob 输出目标或多个作业是实现目标的更简单方法。或者您可以按照 Pete M 的建议进行操作,但此时您需要自己做很多工作。
    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2020-08-20
    • 2020-01-03
    相关资源
    最近更新 更多