2017-10-21 59 views
0

在我有时间获取流程设置的提取策略&之前,我开始收集最终将通过流分析作业的数据。现在我坐在一个Azure blob存储容器中,其中有超过500,000个blob(没有文件夹组织),另一个容器有300,000个,另外一个容器的容量为10,000 - 90,000。准备归档数据以进行流分析导入

生产收集过程现在将这些斑点写入YYYY-MM-DD/HH格式的不同容器,但这只是前进的很棒。我拥有的这些归档数据对于进入我的系统至关重要,我只想修改现有生产ASA作业的输入内容,这样我就可以在查询,函数和其他依赖关系中利用相同的逻辑。

我知道ASA不喜欢超过几百/千的批次,所以我想找出一种方法来分级我的数据,以便在ASA下很好地工作。这将是一次运行...

一个想法是编写一个脚本,看看每个blob,看blob内的时间戳,并重新创建YYYY-MM-DD/HH文件夹设置,但根据我的经验,ASA当blob的lastModified时间不匹配它所在的文件夹时,作业将失败...

任何建议如何解决这个问题?

编辑:没有提到(1)有在这些容器没有文件夹...所有斑点住在容器和(2)我LastModifiedTime上的斑点不再有用或有意义的根源。后者的原因是这些blob从多个其他容器收集,并使用Azure CLI copy-batch命令合并在一起。

回答

0

请问您可以在下面试试?

  1. 两种不同的工作,一个与日期分区的文件夹(比如partitionedJob)执行此处理。另一个老斑点没有任何日期的分区(比如RefillJob
  2. 由于RefillJob有斑点的固定数量,穿上System.Timestamp谓词来确保只处理旧的事件。开始这个工作至少6个SU并运行它,直到所有的事件都被处理完毕。您可以通过查看LastOutputProcessedTime或通过查看输入事件计数或检查输出源来确认。在这次检查后,停止工作。这项工作不再需要。

  3. 启动partitionedJob与时间戳>RefillJob。这假定存在时间戳的文件夹。

+0

我不清楚* partitionedJob *或* refillJob * ..那些是什么?目前没有任何文件夹在容器中,只有500,000个斑点。另外...这些数据是从多个来源收集的,因此它们在彼此的2小时窗口内都具有相同的LastModifiedTime。这是因为blob是从多个源复制的......所以LastModifiedTime现在是没有意义的。我一直在探索使用分区,一次移动批次的500个Blob =>一个文件夹,然后创建查询,以便将这些文件夹视为分区。 –

+0

这些500000个blob中的事件的应用程序时间是多少?这段时间和LastModifiedTime之间的最大差异是多少? –

+0

对于LastModifiedTime,只有大约6-8小时(就像我上面所说的那样,我们有两个或三个Azure CLI'copy-batch'命令同时从不同的容器中汇集到一起......我们在考虑ASA之前做了这些,现在才意识到它的含义)。在每个blob中,有一个时间范围超过6个月的时间...我宁愿使用它,但这不是一个选项。 –