从Azure用户定义的输出程序读取模板

问题描述 投票:0回答:1

我对Azure Data Lake还是很陌生。我想创建使用文件模板来生成输出文件的用户定义的输出程序。问题是在输出程序中存储和检索模板文件的最佳方法是什么?最简单,最简单的方法是将模板文件嵌入到U-SQL程序集中,并从程序集资源中读取它。但这不是灵活的解决方案-如果需要更改模板,则需要重新部署输出程序dll。正确的方法似乎是将模板存储在Azure Data Lake Storage中,但是我不确定如何从输出者的C#代码中读取模板。

azure azure-data-lake
1个回答
0
投票

我认为无法在用户定义的输出程序中引用外部文件。您基本上是逐行处理并输出到流。

用户定义的输出程序具有编程模型,我不认为它支持访问程序集外部的内容。 User Defined Outputter Programming Model

我的建议是:为要支持的不同输出格式定义布尔标志,然后相应地处理行。这样,您可以使用单个输出程序来支持多种输出格式。

已经内置的输出器Outputters.Text()通过更改定界符支持多种格式。您也可以想到类似的东西。

OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text.txt" USING Outputters.Text();
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_outputHeader.txt" USING Outputters.Text(outputHeader: true);
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_charFormat.txt" USING Outputters.Text(charFormat: "string");
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_delimiter.txt" USING Outputters.Text(delimiter: '|');
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_dateTimeFormat.txt" USING Outputters.Text(dateTimeFormat: "D");
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_encoding.txt" USING Outputters.Text(encoding: Encoding.UTF32);
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_escapeCharacter.txt" USING Outputters.Text(escapeCharacter: ':');
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_nullEscape.txt" USING Outputters.Text(nullEscape: "null");
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_quoting.txt" USING Outputters.Text(quoting: false);
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_rowDelimiter.txt" USING Outputters.Text(rowDelimiter: "\u0003");
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_charFormat_nullEscape_escapeCharacter.txt" USING Outputters.Text(charFormat: "string", nullEscape:"NULL", escapeCharacter:'#');
OUTPUT @sampleData TO "/Output/ReferenceGuide/BuiltIn/UDOs/Text_charFormat_encoding.txt" USING Outputters.Text(charFormat: "string", encoding:Encoding.Unicode);
© www.soinside.com 2019 - 2024. All rights reserved.