【问题标题】:Synapse Notebook reference - Call Synapse pipeline from NotebookSynapse Notebook 参考 - 从 Notebook 调用 Synapse 管道
【发布时间】:2022-08-02 11:42:17
【问题描述】:

我正在尝试从突触笔记本运行突触管道,有什么办法吗?

我的突触管道有参数, - 如果可以从笔记本运行它,那么如何传递参数?

  • 不确定这是否会被阻止,尽管管道确实有一个 REST API,但我的意思是,为什么不使用 Synapse 管道来进行主要编排,让笔记本做有趣的 Spark 事情呢?
  • 是的,这(...使用 Synapse Pipeline 进行主要编排.....)工作正常,我只是想将带有 params 的 pipeline 视为从 Spark 调用的“工具”。
  • 是的,好吧,但您可能还需要考虑成本。 Spark 池总是有 2-3 分钟的启动时间,而且你会让它们在你的管道运行的整个过程中运行?对我来说听起来很贵。

标签: azure-synapse spark-notebook


【解决方案1】:

正如建议的那样鲍勃,我也建议不要这样做(从突触笔记本调用突触管道),因为火花池。

但是如果你想尝试一下,你可以通过 REST API 以外的这种方法。

在此,我添加了一个存储事件触发到突触管道它触发使用突触笔记本代码写入存储.

为此,您需要一个存储帐户和一个空容器。

首先创建一个ADLS Gen2 的链接服务在突触和突触管道的存储事件触发器中。

在 Synapse 笔记本中,将 json 文件写入触发管道的 ADLS。 您可以使用相同的 json 从突触笔记本传递参数。

带有示例参数的 Synapse 笔记本中的代码:

from pyspark.sql.types import *
myjson=[{"Name":"Rakesh","Age":22,"Marks":90}]
schema2=StructType([StructField('Name',StringType(),True),StructField('Age',IntegerType(),True),StructField('Marks',IntegerType(),True)])
df = spark.createDataFrame(data=myjson,schema=schema2)
df.show(truncate=False) 

df2=df.toPandas()
df2.reset_index().to_json('abfss://input/myjson.json', storage_options = {'linked_service' : 'AzureDataLakeStorage1'},orient='records')




这里input 是我的容器,AzureDataLakeStorage1 是我的链接服务。 orient='records' 给出带有参数的索引。

这将在 ADLS 容器中创建myjson.json 文件,如下所示。



上述文件触发 Synapse 管道。要使用我们传递的参数,请使用管道中的查找活动。

查找活动:

在查找中,不要在数据集中给出任何数据集值。将通配符路径文件指定为*.json。



查找将给出如下结果:



您可以使用表达式@activity('Lookup1').output.value[0].Age 和 @activity('Lookup1').output.value[0].Name 像这样在突触管道中访问具有自己数据类型的参数。

例如在设置变量活动中:



输出:
由于变量仅支持字符串、布尔值和数组,我已将其转换为字符串以显示输出。您可以在任何地方使用这些参数。

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 2021-10-16
    • 2022-10-21
    • 2022-08-19
    • 2023-01-22
    • 2021-06-09
    • 2021-09-15
    • 2021-12-15
    • 2022-10-21
    相关资源
    最近更新 更多