Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件创建为流并上载到Azure_C#_Azure_Parquet_Choetl - Fatal编程技术网

C# 将文件创建为流并上载到Azure

C# 将文件创建为流并上载到Azure,c#,azure,parquet,choetl,C#,Azure,Parquet,Choetl,我正在使用ChoETL和ChoETL.Parquet库根据一些其他数据创建一个拼花文件。我可以在本地创建文件 using (ChoParquetWriter parser = new ChoParquetWriter($"..\\..\\..\\parquet_files\\{club}_events.parquet")) { parser.Write(events); } 在此代码段中,事件是包含字符串的对象列表。它们

我正在使用ChoETL和ChoETL.Parquet库根据一些其他数据创建一个拼花文件。我可以在本地创建文件

  using (ChoParquetWriter parser = new ChoParquetWriter($"..\\..\\..\\parquet_files\\{club}_events.parquet"))
       {
           parser.Write(events);
       }
在此代码段中,事件是包含字符串的对象列表。它们将转换为拼花数据

到目前为止,我已经编写了上传到Azure的代码,但它需要一个本地文件作为输入

BlobServiceClient BlobServiceClient = new BlobServiceClient("REDACTED");
var containerClient = BlobServiceClient.GetBlobContainerClient("base-test");
BlobClient blobClient = containerClient.GetBlobClient($"Base/{RequestTime.Year}/{RequestTime.Month}/{RequestTime.Day}/{RequestTime.Hour}/{RequestTime.Minute}/events.parquet");
using FileStream uploadFileStream = File.OpenRead("..\\..\\..\\events.parquet"); 
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close();

我需要在内存中创建它,然后上传到Azure blob存储。我该怎么做?澄清:我需要上传拼花地板文件。

关于这个问题,您可以使用方法
BlockBlobClient.OpenWriteAsync
获取流,并为
ChoParquetWriter
提供流。然后,编写器将直接将内容写入Azure blob

比如说

  List<EmployeeRecSimple> objs = new List<EmployeeRecSimple>();

            EmployeeRecSimple rec1 = new EmployeeRecSimple();
            rec1.Id = 1;
            rec1.Name = "Mark";
            objs.Add(rec1);

            EmployeeRecSimple rec2 = new EmployeeRecSimple();
            rec2.Id = 2;
            rec2.Name = "Jason";
            objs.Add(rec2);

            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
            var desContainer = blobServiceClient.GetBlobContainerClient("output");
            var desBlob= desContainer.GetBlockBlobClient("my.parquet");
            var options = new BlockBlobOpenWriteOptions {
                HttpHeaders = new BlobHttpHeaders {
                    ContentType = MimeMapping.GetMimeMapping("parquet"),
                },
                // progress updates about data transfers
                ProgressHandler = new Progress<long> (
                    progress => Console.WriteLine("Progress: {0} bytes written", progress))
                    
                
            };

            using (var outStream = await desBlob.OpenWriteAsync(true, options).ConfigureAwait(false))
            using (ChoParquetWriter parser = new ChoParquetWriter(outStream)) {

                parser.Write(objs);
            }

public partial class EmployeeRecSimple
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

List objs=new List();
EmployeeRecSimple rec1=新EmployeeRecSimple();
rec1.Id=1;
rec1.Name=“Mark”;
对象添加(rec1);
EmployeeRecSimple rec2=新EmployeeRecSimple();
rec2.Id=2;
rec2.Name=“Jason”;
对象添加(rec2);
BlobServiceClient BlobServiceClient=新BlobServiceClient(connectionString);
var desccontainer=blobServiceClient.GetBlobContainerClient(“输出”);
var desBlob=desccontainer.GetBlockBlobClient(“my.parquet”);
var options=新BlockBlobOpenWriteOptions{
HttpHeaders=新BlobHttpHeaders{
ContentType=MimeMapping.GetMimeMapping(“拼花”),
},
//有关数据传输的最新进展
ProgressHandler=新进度(
progress=>Console.WriteLine(“progress:{0}字节写入”,progress))
};
使用(var outStream=await desBlob.OpenWriteAsync(true,options.ConfigureAwait(false))
使用(ChoParquetWriter解析器=新的ChoParquetWriter(扩展)){
Write(objs);
}
公共部分类EmployeeRecSimple
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}

失败的
没有太多说明。您是否遇到编译或运行时错误?这只是我尝试过的一行。现在我给它的拼花文件的路径,它的工作。你想通过MemoryStream上传一些东西吗?是的……但是我认为我不能用这个库来做这件事,因为你需要给它一个路径,这个路径有效!!非常感谢。