在 Logic App 工作流中另存为 .PARQUET 文件
Save as .PARQUET file in Logic App workflow
如何将 运行 查询和列表结果 的输出文件保存为 .PARQUET 文件格式。
这是我当前的工作流程。
我的逻辑应用程序正在运行,但是每次我在 Apache Parquet Viewer 上查看时创建的文件 .parquet 都无效
谁能帮我解决这个问题。谢谢!
输出:
我看到您正在尝试将 .parquet 添加到您收到的 csv 文件中,但这不是将其转换为 parquet 文件的方式。
您可以尝试的解决方法之一是获取 csv 文件,然后添加可以转换为 parquet 文件的 Azure 函数,然后将 azure 函数添加到逻辑应用程序。
这是对我有用的功能:
BlobServiceClient blobServiceClient = new BlobServiceClient("<YOUR CONNECTION STRING>");
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("<YOUR CONTAINER NAME>");
BlobClient blobClient = containerClient.GetBlobClient("sample.csv");
//Download the blob
Stream file = File.OpenWrite(@"C:\Users\<USER NAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\" + blobClient.Name);
await blobClient.DownloadToAsync(file);
Console.WriteLine("Download completed!");
file.Close();
//Read the downloaded blob
Stream file1 = new FileStream(blobClient.Name, FileMode.Open);
Console.WriteLine(file1.ReadToEnd());
file1.Close();
//Convert to parquet
ChoParquetRecordConfiguration csv = new ChoParquetRecordConfiguration();
using (var r = new ChoCSVReader(@"C:\Users\<USER NAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\" + blobClient.Name))
{
using (var w = new ChoParquetWriter(@"C:\Users\<USER NAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\convertedParquet.parquet"))
{
w.Write(r);
w.Close();
}
}
完成此步骤后,您可以发布到您的 Azure 函数并将 Azure 函数连接器添加到您的逻辑应用程序
您可以跳过前 2 个步骤(即读取和下载 blob)并直接从逻辑应用程序获取 blob 并将其发送到您的 azure 函数并按照与上述相同的方法进行操作。生成的parquet文件会在这个路径下。
C:\Users\<USERNAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\convertedParquet.parquet
这里convertedParquet.parquet
是parquet文件的名字。现在您可以在 Apache Parquet reader.
中读取转换后的 parquet 文件
这是输出
如何将 运行 查询和列表结果 的输出文件保存为 .PARQUET 文件格式。
这是我当前的工作流程。
我的逻辑应用程序正在运行,但是每次我在 Apache Parquet Viewer 上查看时创建的文件 .parquet 都无效
谁能帮我解决这个问题。谢谢!
输出:
我看到您正在尝试将 .parquet 添加到您收到的 csv 文件中,但这不是将其转换为 parquet 文件的方式。
您可以尝试的解决方法之一是获取 csv 文件,然后添加可以转换为 parquet 文件的 Azure 函数,然后将 azure 函数添加到逻辑应用程序。
这是对我有用的功能:
BlobServiceClient blobServiceClient = new BlobServiceClient("<YOUR CONNECTION STRING>");
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("<YOUR CONTAINER NAME>");
BlobClient blobClient = containerClient.GetBlobClient("sample.csv");
//Download the blob
Stream file = File.OpenWrite(@"C:\Users\<USER NAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\" + blobClient.Name);
await blobClient.DownloadToAsync(file);
Console.WriteLine("Download completed!");
file.Close();
//Read the downloaded blob
Stream file1 = new FileStream(blobClient.Name, FileMode.Open);
Console.WriteLine(file1.ReadToEnd());
file1.Close();
//Convert to parquet
ChoParquetRecordConfiguration csv = new ChoParquetRecordConfiguration();
using (var r = new ChoCSVReader(@"C:\Users\<USER NAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\" + blobClient.Name))
{
using (var w = new ChoParquetWriter(@"C:\Users\<USER NAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\convertedParquet.parquet"))
{
w.Write(r);
w.Close();
}
}
完成此步骤后,您可以发布到您的 Azure 函数并将 Azure 函数连接器添加到您的逻辑应用程序
您可以跳过前 2 个步骤(即读取和下载 blob)并直接从逻辑应用程序获取 blob 并将其发送到您的 azure 函数并按照与上述相同的方法进行操作。生成的parquet文件会在这个路径下。
C:\Users\<USERNAME>\source\repos\ParquetConsoleApp\ParquetConsoleApp\bin\Debug\netcoreapp3.1\convertedParquet.parquet
这里convertedParquet.parquet
是parquet文件的名字。现在您可以在 Apache Parquet reader.
这是输出