Azure 事件中心在单个文件中捕获多个事件

Azure event hub capture multiple events in a single file

我们计划使用 Azure 事件中心。我们的应用程序正在将事件发送到 Azure 事件中心(一次一个事件)。应用程序未指定任何分区。我们启用 Capture 以将数据写入 Data Lake Storage Gen 2。

启用捕获后,事件将作为单个 avro 文件写入 datalakestorage gen2。是否可以将时间范围内发生的事件作为单个文件(csv 或 avro)写入?将每个事件写为单个文件或将批量事件写在单个文件中更好吗?

is it possible to write events occurred in a time frame as a single file (csv or avro)?

这取决于 eventhub 中使用了多少个分区。 Each partition captures independently 并在捕获时写入一个完整的块 blob。

所以如果这些事件只发送到1个分区(比如你的eventhub只有1个分区或者你用你的代码控制发送到指定分区的事件),那么在一个时间范围内,只有1个avro文件已创建。

如果events are distributed among partitions in a round-robin fashion(这是默认行为),那么在一个时间范围内,创建的avro文件的数量将与分区的数量相同。

Will Is it better to write each event as a single file or bulk events in a single file?

单个文件中的批量事件会更好,因为存储成本较低。但这取决于您在指定的 time windowsize window 期间发送多少事件进行捕获。例如,如果time window抓取时间为5分钟,而在这5分钟内你只发送了1个事件,那么只会创建一个文件。