【问题标题】:How to give the databricks filepath in data factory如何在数据工厂中提供数据块文件路径
【发布时间】:2020-04-02 14:36:44
【问题描述】:

【问题讨论】:

  • 请提供minimal reproducible example,让想要帮助您的人容易理解您的问题
  • 当我执行 sp 时,我已经在数据库中插入了笔记本路径,它将通过使用我需要执行该 databricks 笔记本来提供笔记本路径。我附上图片以供参考
  • 笔记本路径参数化如下@string(activity('get_notebook_path').output)。当我直接给笔记本时,它正在执行,当我将它作为参数传递时遇到问题

标签: python python-3.x azure-data-factory azure-data-factory-2 azure-databricks


【解决方案1】:

确保您已在 Databricks 活动中指定笔记本路径。

这是 Azure 数据工厂中的例外行为。

错误代码:3201

  • 消息:缺少必填字段:settings.task.notebook_task.notebook_path。
  • 原因: 错误创作:未正确指定笔记本路径。
  • 建议:在 Databricks 活动中指定笔记本路径。

更多详情请参考“Run a Databricks notebook with the Databricks Notebook activity in Azure Data Factory

希望这会有所帮助。

【讨论】:

  • 我通过使用存储过程获取笔记本路径,之后我将笔记本路径作为参数提供,如下所示:@activity('sp_file_path').output
  • 我通过使用存储过程获取笔记本路径,之后我将笔记本路径作为参数提供,如下所示:@activity('sp_file_path')。但我收到如下错误目前仅支持绝对路径。路径必须以“/”存储过程开头,输出笔记本路径为:/Users/MetaDataUpdate/FiletoDeltatable
  • 据我了解,您不能使用storedproc 来获取Notebook 路径。能否请您调试并检查错误消息?
  • 我将笔记本路径存储在元数据表中,并根据 taskid 加入任务表将从元数据表中获取笔记本路径,此过程由存储过程执行。所以我正在尝试将 storeproc 结果作为参数传递
【解决方案2】:

这个问题有两个部分:

  1. 从存储过程中检索返回值
  2. 在 Databricks 活动中使用返回值

第 1 部分: 请尝试从查找活动中使用您的存储过程,而不是存储过程活动。不同之处在于 Lookup Activity 期望返回数据,并将其公开。存储过程活动不需要返回数据,因此可能不会公开任何返回值。 (请参阅查找活动设置中“使用查询”下的“存储过程”选项。)

为了简化开发/故障排除过程,请将设置变量活动连接到查找活动。 Lookup 活动返回数组中的数据,因此让我们使用数组类型变量。 @activity('Lookup1').output.value.

数组不适合在 Databricks 活动中使用,因此让我们从数组中提取路径。使用字符串类型变量将第二个 Set Variable 活动连接到第一个 Set Variable 活动。使用 Debug 运行并检查第一个 Set Variable 活动的输出;判断是否存在键值对。在我的测试用例中,我有一个键值对,其中键是空字符串。 @string(first(variables('arrayoutput'))[''])

第 2 部分: 现在第二个变量包含路径,让我们参数化并使用 Databricks 活动。如果您的路径不以“/”开头,那么您需要在 Databricks Notebook 活动设置的 Notebook 路径中添加此动态表达式 @concat('/',variables('singleoutput'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多