雪花程序递归调用在Parrallel中运行

时间:2020-04-15 23:39:35

标签: javascript parallel-processing snowflake-cloud-data-platform

我需要找到一种方法来并行触发Snowflake Procedure调用。一个很好的例子是,在表加载期间,三个初始插入都在SQL主块开始运行之前全部进入了一个临时表。因为这三个步骤并不相互依赖,所以我希望并行运行它们。当前的代码库使它们按顺序运行,当我们迁移到Snowflake时,我们正在构建一个Javascript Procedure框架来运行所有迁移的查询,是否有可能触发Snowflake过程以递归方式并行运行?

下面是一个函数,它仅运行两个彼此独立的命令,并且可以并行运行。

create or replace procedure stackOverflowProcedure (inputArray array) 
returns varchar
language javascript
strict
as
$$
  var demoIterator = 1;
  while (demoIterator <= INPUTARRAY.length) {
    snowflake.createStatement({sqlText: INPUTARRAY[demoIterator - 1]}).execute();
    demoIterator = demoIterator + 1;
  };
$$;

call stackOverflowProcedure(array_construct($$insert into temp_table select * from source_table_1;$$,$$insert into temp_table select * from source_table_2$$));

1 个答案:

答案 0 :(得分:2)

是的,我一直使用它来并行运行存储过程。

第1步:如果加载的文件数量很多(仓库中每个节点并行加载8个文件...节点=大小调整表中的贷项),请创建要运行的仓库数量并行加载存储过程。

第2步:如果可以安全地并行运行,则为每个存储过程或同一实例创建一个任务。如果您正在使用大量文件运行负载,请将每个任务设置为使用不同的仓库。

第3步:安排您的事件在同一时间运行。它们可能不会在同一时间开始,但它们应该接近。