查询非常大的xml文件

时间:2016-04-01 12:21:15

标签: c# azure-data-lake u-sql

我有一个合并的非常大的xml文件,按GB的规模。我正在使用以下代码和xpath查询来读取和处理数据。

{{1}}

然而,它仅适用于MB规模较小的文件。它在本地工作正常,但ADLA失败。我也需要使用命名空间管理器。我如何缩放它,以便我可以处理更大的文件。在使用大文件提交作业时,我始终会收到此错误而没有任何信息。

  

VertexFailedError

1 个答案:

答案 0 :(得分:1)

我在MSDN论坛中给出了同样问题的答案:

默认情况下,U-SQL Extractors被扩展为在输入文件的较小部分(称为扩展区)上并行工作。这些范围大小各约为250MB。

如果您正在处理的数据不适合某个范围,您必须告诉提取器一个C#属性,提取器必须完整地查看该文件。您可以通过在提取器类之前添加以下部分来实现此目的:

[SqlUserDefinedExtractor(AtomicFileProcessing = true)] 

现在,在您的情况下,XML文档显然无法拆分,因为解析器需要查看文档的开头和结尾。如果您只有一个XML文档,则尤其如此(旁注:在我看来,单个XML文档或JSON文档的GB通常是一个坏主意)。

此外,我建议您查看我们在GitHub网站上提供的示例XML提取器:https://github.com/Azure/usql/tree/master/Examples/DataFormats