【发布时间】:2018-01-13 03:23:21
【问题描述】:
在阅读了article 之后,我决定尝试构建一个数据摄取管道。一切正常。我能够将数据发送到 Event Hub,由 Stream Analytics 摄取并发送到 Data Lake。但是,对于一些我觉得很奇怪的事情,我有几个问题。如果比我更有经验的人能够回答,我将不胜感激。
这是我的流分析中的 SQL
SELECT
*
INTO
[my-data-lake]
FROM
[my-event-hub]
现在,对于问题:
- 我应该将 100% 的数据存储在一个文件中,尝试将其拆分为多个文件,还是尝试实现一个文件一个对象?流分析将所有数据存储在一个文件中,作为一个巨大的 JSON 数组。我尝试将 {date} 和 {time} 设置为变量,但它每天仍然是一个巨大的单个文件。
- 是否有办法强制流分析将 Event Hub 中的每个条目写入其自己的文件中?或者可能限制文件的大小?
- 有没有办法从流分析中设置文件的名称?如果是这样,如果名称已经存在,有没有办法覆盖文件?
- 我还注意到该文件在创建后立即可用,并且是实时写入的,因此当我下载/显示文件时可以看到其中的数据截断。此外,在它完成之前,它不是一个有效的 JSON。如果我在写入数据湖文件时(通过 U-SQL)查询它会发生什么?忽略最后一个条目是否足够聪明,或者将其理解为不完整的对象数组?
- 将 JSON 数据存储为数组还是将每个对象存储在新行中更好?
也许我对我的问题采取了不好的方法,但我在 Google 数据存储区(Google 的 NoSQL 解决方案)中有一个庞大的数据集。我只能使用权限有限的帐户访问数据存储区。我需要将此数据存储在数据湖中。因此,我制作了一个应用程序,将数据从 Datastore 流式传输到 Event Hub,由 Stream Analytics 摄取,后者在 Data Lake 中写下文件。这是我第一次使用这三种技术,但似乎是最好的解决方案。它是我替代 ETL 混乱的首选。
我很抱歉提出这么多问题。我希望有人能帮助我。
提前致谢。
【问题讨论】:
-
查看 Azure 事件中心捕获功能 docs.microsoft.com/en-us/azure/event-hubs/…,用于根据窗口(时间/大小)将管道(原始)流数据直接存储到 Azure 存储容器或 Azure Data Lake Store需要。
-
@RomanKiss 谢谢!这很有意义!我的流分析有一些“逻辑”,但我可能会忽略它并直接使用事件中心捕获解决方案。
-
捕获的流可以直接用于暖和冷管道,除了来自事件中心中摄取的数据的热(实时)管道并通过 ASA 作业进行分析..
-
@RomanKiss 对不起,我不是很有经验。您认为什么是暖管道或冷管道?在我的场景中,我几乎有来自不同数据源的数据,并且基于“data_source”JSON 属性,我必须将其归档到数据湖中的不同文件夹中。但是,AFAIK,直接来自 Event Hubs Capture,我无法在其中定义条件路径。
-
Azure 事件中心捕获功能允许基于分区消费者模型(每个分区单独存储文件)归档提取的遥测数据。事件中心的最大分区数为 32,因此如果您的 numOfsources docs.microsoft.com/en-us/azure/event-hubs/…
标签: azure-data-lake azure-eventhub azure-stream-analytics