我正在尝试从 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。如果可以,不知道为什么它不能接受参数
我缺少什么?
如果需要更多信息,我也可以提供。
我是这个 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)