C# 在Azure Data lake中解压缩.gz文件
如何使用c#asp.net解压和读取Azure data lake中的.gz文件 我尝试了以下代码,但它导致了一个异常 异常:找不到路径“D:\xxxxxx\filename”的一部分 (文本、Csv、Tsv)现在本机支持gzip文件,因此您无需执行任何特殊操作,只需读取它们: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
@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);
}
}
}
}