我在 Microsoft Azure Machine Learning 的“studio (preview)”中创建了一个管道,用于对连接到我们数据仓库的 blob 存储中的数据集应用机器学习算法。
在“设计器”中,可以在管道中添加“执行 R 脚本”操作。我使用此功能来执行我自己的机器学习算法。
我已经成功运行了一个“hello world”版本的脚本(包括使用“脚本包”加载我自己的 R 文件中的函数)。它应用了一个非常简单的操作(计算日期列中的日期与“今天”的天数差),并将输出存储为一个新文件。由于导出的文件包含正确的信息,我知道 R 脚本运行良好。
脚本看起来像这样:
# R 版本: 3.5.1# 脚本必须包含一个名为 azureml_main 的函数,# 这是此模块的入口点。# 入口点函数可以包含最多两个输入参数:# Param<medals>: 一个 R 数据框# Param<matches>: 一个 R 数据框azureml_main <- function(dataframe1, dataframe2){ message("STARTING R script run.") # 如果一个 zip 文件连接到第三个输入端口,它会被 # 解压到 "./Script Bundle" 目录下。这个目录被添加到 # sys.path 中。 message('Adding functions as source...') if (FALSE) { # 这有效... source("./Script Bundle/first_function_for_script_bundle.R") } else { # 这也有效! message('Sourcing all available functions...') functions_folder = './Script Bundle' list.files(path = functions_folder) list_of_R_functions <- list.files(path = functions_folder, pattern = "^.*[Rr]$", include.dirs = FALSE, full.names = TRUE) for (fun in list_of_R_functions) { message(sprintf('Sourcing <%s>...', fun)) source(fun) } } message('Executing R pipeline...') dataframe1 = calculate_days_difference(dataframe = dataframe1) # 返回数据集作为命名列表 return(list(dataset1=dataframe1, dataset2=dataframe2))}
尽管我在 R 脚本中打印了一些消息,但我无法找到应该包含这些打印消息的“stdoutlogs”和“stderrlogs”。
我需要这些打印的消息来1)了解分析的进行情况,以及 – 最重要的是 – 2)在代码失败时进行调试。
现在,我在多个位置找到了“stdoutlogs.txt”和“stderrlogs.txt”文件。这些文件可以在“设计器”中点击“执行 R 脚本”后在“日志”下找到。我还可以在“实验”中,点击一个完成的“运行”后,在“输出”和“日志”标签下找到“stdoutlogs.txt”和“stderrlogs.txt”文件。然而…所有这些文件都是空的。
谁能告诉我如何从我的 R 脚本中打印消息,并帮助我找到这些打印信息的位置?
回答:
请点击“执行 R 模块”并下载 70_driver.log?我在一个 R 样本中尝试了 message(“STARTING R script run.”),并能在那里找到输出。