正在删除Azure Synapse笔记本中的文件



这本应该很简单,但结果需要一点GoogleFu。我有一个用C#写的Azure Synapse Spark笔记本,

  • 接收Deflate压缩IIS文件的列表
  • 将二进制文件读取到DataFrame中
  • 一次解压缩一个文件,并将其写入Parquet格式

现在,在成功处理完所有这些文件后,我需要删除压缩文件。

这是我的概念验证,但它运行得很好。

  • 创建指向包含要删除的文件的存储帐户的链接服务请参阅配置对Azure Blob存储的访问
  • 请参阅下面的代码示例
#r "nuget:Azure.Storage.Files.DataLake,12.0.0-preview.9"
using Microsoft.Spark.Extensions.Azure.Synapse.Analytics.Utils;
using Microsoft.Spark.Extensions.Azure.Synapse.Analytics.Notebook.MSSparkUtils;
using Azure.Storage.Files.DataLake;
using Azure.Storage.Files.DataLake.Models;
string blob_sas_token = Credentials.GetConnectionStringOrCreds('your linked service name here');
Uri uri = new Uri($"https://'your storage account name here'.blob.core.windows.net/'your container name here'{blob_sas_token}") ;
DataLakeServiceClient _serviceClient = new DataLakeServiceClient(uri);
DataLakeFileSystemClient fileClient = _serviceClient.GetFileSystemClient("'path to directory containing the file here'") ;
fileClient.DeleteFile("'file name here'") ;

对Credentials.GetConnectionStringOrCreds的调用返回一个已签名的SAS令牌,该令牌已准备好让代码附加到存储资源uri。

如果您愿意,当然可以使用DeleteFileAsync方法。

希望这能为其他人节省几个小时的GoogleFu。

在笔记本电脑中为Pyspark用户使用以下命令

mssparkutils.fs.rm(,True(