gpt4 book ai didi

r - Azure函数: How to trigger PS script on file addition to blob container to invoke R script processing

转载 作者:行者123 更新时间:2023-12-02 23:55:24 24 4
gpt4 key购买 nike

我希望创建一个 Azure 函数,从 Blob 存储中获取文件并将其发送到 R 脚本。

我关注了this通过添加站点扩展来启用 R 脚本,在经历了一些最初的小问题后,它终于可以工作了。

现在我遇到的问题是:

1.当新文件上传到 Blob 存储时如何触发该函数,因为这使用了 Powershell 方法。

cd D:\home\site\wwwroot\MyFunctionName
D:\home\R-3.3.3\bin\x64\Rscript.exe script.r 2>&1

2.如何从 R 脚本访问 Azure blob 文件进行处理。

有没有人可以分享一个简单的例子。假设只需在 R 中打开文件并打印文件中的总计行。

问候基兰

最佳答案

由于 Azure 函数尚不支持 Powershell 的 blob 触发器,您可以考虑使用 BlobTrigger - C# 代替。每当将 blob 添加到指定容器时就会运行的 C# 函数,然后您可以将此 blob 文件保存到本地,然后调用 R 脚本打开并读取该文件。

这里有一个 C# 函数示例供您引用。

public static void Run(Stream myBlob, string name, string ext, TraceWriter log)
{
string basePath = Environment.ExpandEnvironmentVariables(@"%home%\site\wwwroot\BlobTriggerCSharp1");

// save to current dir
string filePath = Path.Combine(basePath, $"{Guid.NewGuid().ToString()}.{ext}");
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
myBlob.CopyTo(fs);
}

// run R script
var process = new System.Diagnostics.Process {
    StartInfo = new System.Diagnostics.ProcessStartInfo {
        FileName = "D:/home/R-3.3.3/bin/x64/Rscript.exe",
         Arguments = basePath + "/script.r " + filePath,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    }
};
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();

log.Info(output);
}

function.json

{
"bindings": [
{
"name": "myBlob",
"type": "blobTrigger",
"direction": "in",
"path": "mycontainer/{name}.{ext}",
"connection": "mystorage_STORAGE"
}
],
"disabled": false
}

如果您的 blob 文件是 TXT 文件,您可以使用 R 中的 read.table() 读取它。

args = commandArgs(trailingOnly=TRUE)
df = read.table(args[1], header=TRUE)
print(df)

关于r - Azure函数: How to trigger PS script on file addition to blob container to invoke R script processing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com