小编Sau*_*jee的帖子

AirFlow DatabricksSubmitRunOperator 不接受笔记本参数

我正在尝试从 Airflow 触发笔记本。笔记本具有定义为小部件的参数,我试图通过 notebook_params 参数将值传递给它,尽管它会触发,但当我查看提交的作业时,参数似乎没有传递。

例如代码

new_cluster = {'spark_version': '6.5.x-cpu-ml-scala2.11',
                        'node_type_id': 'Standard_DS3_v2',
                        'num_workers': 4
                        }

notebook_task = DatabricksSubmitRunOperator(task_id='notebook_task',
             json={'new_cluster': new_cluster,
                                'notebook_task': {
                                    'notebook_path': '/Users/abc@test.com/Demo',
                                    'notebook_parameters':'{"fromdate":"20200420","todate":"20200420", "datalakename":"exampledatalake", "dbname": "default", "filesystem":"refined" , "tablename":"ntcsegmentprediction", "modeloutputpath":"curated"}'
                                },
                            })

Run Code Online (Sandbox Code Playgroud)

但是,DatabricksRunNowOperator 支持它,并且它可以工作

notebook_run = DatabricksRunNowOperator(task_id='notebook_task',
            job_id=24,
            notebook_params={"fromdate":"20200420","todate":"20200420", "datalakename":"exampledatalake", "dbname": "default", "filesystem":"refined" , "tablename":"ntcsegmentprediction", "modeloutputpath":"curated"}
        )

Run Code Online (Sandbox Code Playgroud)

在 DatabricksSubmitRunOperator 的文档和源代码

它说它可以接受一个notebook_task。如果可以,不知道为什么它不能接受参数

我缺少什么?

如果需要更多信息,我也可以提供。

airflow databricks azure-databricks

6
推荐指数
1
解决办法
4320
查看次数

Moq 框架对返回任务的方法进行单元测试

我是这个 MOQ 框架的新手,老实说,我很难运行我的单元测试。基本上,我有一个 C# 应用程序,它基本上使用 PostAsync 上传到 API。

现在,由于我不能(也不应该)在我的单元测试期间调用 API(否则它将是一个集成测试),我在它周围添加了一个包装器方法,并允许该方法通过模拟它返回 true。但无论我做什么,它都返回 false。我已经解决了SO问题,但我不确定我错过了什么。我没有使用过接口,但使用了带有虚方法的类。

这是我想要测试的示例代码

public async Task<bool> CreateNoteBookDirectory (string url ,string bearertoken, JavaScriptSerializer jser,RestPostClass rest)
        {
            NoteBookDirectory jsnbdir = new NoteBookDirectory();
            jsnbdir.path = "/JobNotebooks/ClientScoreDataInput";

            var directorycreate = jser.Serialize(jsnbdir);
            var content = new StringContent(directorycreate, Encoding.UTF8, @"application/json");


            bool result=await rest.HttpPost(url, content, bearertoken);

            return result;
        }
Run Code Online (Sandbox Code Playgroud)

这个方法在主类中。

RestPostClass 类有虚方法 HttpPost,它的骨架有点像这样

 public async virtual Task<bool> HttpPost(String url, StringContent content, string bearertoken)
        {
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", bearertoken);
            // Add an …
Run Code Online (Sandbox Code Playgroud)

.net c# unit-testing moq

1
推荐指数
1
解决办法
294
查看次数

标签 统计

.net ×1

airflow ×1

azure-databricks ×1

c# ×1

databricks ×1

moq ×1

unit-testing ×1