并发读/写ADLA

时间:2017-06-22 04:42:48

标签: azure-data-lake u-sql

问:1 我们正在考虑将读/写并行化到ADLA表,并且想知道这种设计的含义是什么。 我认为读取很好但是同时写入同一ADLA表的最佳做法应该是什么。

问:2    假设我们有USQL脚本,它们在相同/不同的ADLA表中有多个行集和多个输出/插入。什么是USQL中的事务范围故事。如果任何输出/插入语句失败,那么它是否会导致所有先前的插入回滚。如何处理交易范围

由于 阿米特

1 个答案:

答案 0 :(得分:2)

在我回答之前,让我先描述一下当你插入表格时会发生什么(我认为这是你对表格的写法而不是截断/插入的意思)。

每个INSERT语句将为表创建一个新的范围文件。因此,如果您插入新行(建议一次插入多行而不只是一行),将创建一个新文件,并在完成阶段更新元数据,以便元数据服务知道该文件属于到桌子。

所以你应该能够并行运行几个插件。

交易范围目前如下(请注意,Azure Data Lake Analytics平台是一个大数据处理而非OLTP平台,因此不提供不同的交易保证可供选择):

ADLA中的U-SQL批处理分为4个阶段:

  1. 准备包含编译,优化和代码生成
  2. 排队等待所有所需资源的位置
  3. 实际运行时执行阶段
  4. 文件和元数据持久化的终结阶段。
  5. 在运行时阶段,如果发生运行时错误,则所有顶点都成功或失败。所以这是全有或全无。

    处理进入完成阶段后,原子性将降低到文件或表级别。您可能会生成3个文件,但最终确定一个文件可能会因某些原因而失败。然后作业失败,但将创建成功的2个文件。