C# 在Azure Data lake中解压缩.gz文件

C# 在Azure Data lake中解压缩.gz文件,c#,asp.net,azure-data-lake,C#,Asp.net,Azure Data Lake,如何使用c#asp.net解压和读取Azure data lake中的.gz文件 我尝试了以下代码,但它导致了一个异常 异常:找不到路径“D:\xxxxxx\filename”的一部分 (文本、Csv、Tsv)现在本机支持gzip文件,因此您无需执行任何特殊操作,只需读取它们: @data = EXTRACT Timestamp DateTime, Event string, Value int FROM "/input/input

如何使用c#asp.net解压和读取Azure data lake中的.gz文件

我尝试了以下代码,但它导致了一个异常

异常:找不到路径“D:\xxxxxx\filename”的一部分

(文本、Csv、Tsv)现在本机支持gzip文件,因此您无需执行任何特殊操作,只需读取它们:

@data =
    EXTRACT Timestamp DateTime,
            Event string,
            Value int
    FROM "/input/input.csv.gz"
    USING Extractors.Csv();
这也适用于自定义提取器:

@data =
    EXTRACT Timestamp DateTime,
            Event string,
            Value int
    FROM "/input/input.csv.gz"
    USING  new USQLworking.MyExtractor();
请参阅Michael Rys的进一步说明。

我得到了解决方案。 我们应该使用client.GetReadStream(entry.FullName)而不是File.OpenRead(filename)

代码是:

 foreach (var entry in client.EnumerateDirectory("/Test/"))
                {
                    StringBuilder lines = new StringBuilder();
                    try
                    {
                        using (Stream fileStream = client.GetReadStream(entry.FullName), zippedStream = new GZipStream(fileStream, CompressionMode.Decompress))
                        {
                            using (StreamReader reader = new StreamReader(zippedStream))
                            {
                                string line;
                                while ((line = reader.ReadLine()) != null)
                                {
                                    lines.AppendLine(line);
                                    Console.WriteLine(lines);
                                }
                            }
                        }
                    }

他没有使用u-SQL,所以我不认为这个appliesHi@PeterBons,我认为他们正在尝试使用他们自己的方法,因为他们不知道内置提取器本机处理gzip文件,但当然,他们可能正在尝试创建自定义提取器-但它仍然是名称;只需将文件命名为
…something.gz
。我不希望文件位于d:\。你能发布更多的代码吗?@PeterBons我用更多的代码更新了这个问题。你可能想使用entry.FullName来代替entry.Name,这样它就拥有了剩下的路径
 foreach (var entry in client.EnumerateDirectory("/Test/"))
                {
                    StringBuilder lines = new StringBuilder();
                    try
                    {
                        using (Stream fileStream = client.GetReadStream(entry.FullName), zippedStream = new GZipStream(fileStream, CompressionMode.Decompress))
                        {
                            using (StreamReader reader = new StreamReader(zippedStream))
                            {
                                string line;
                                while ((line = reader.ReadLine()) != null)
                                {
                                    lines.AppendLine(line);
                                    Console.WriteLine(lines);
                                }
                            }
                        }
                    }